PDA

Просмотр полной версии : Глобальные функции и переменные


Alssn
18.09.2007, 17:36
В ActionScript 3.0 отсутствует постоянно доступный _root и поэтому возникает проблема хранения переменных и функций, которые будут доступны из любого участка кода для чтения/записи, создания и удаления.
Я использую три нижеперечисленных способа:
Использование stage для отображаемых объектов или передача ссылки на stage через отдельный класс, как описано здесь (http://www.kirupa.com/forum/showthread.php?p=1952513#post1952513). Статичные переменные и функции в отдельном классе и обращение к этому классу без создания экземпляра, геттеры и сеттеры. Этот вариант весьма удобен в определенных случаях, если создать объект типа Object и хранить переменные и функции как его свойства. Передача ссылки на объект, содержащий функции и переменные, каждому объекту при создании или передача её по наследству

Поделитесь, пожалуйста, если вы знаете другие методы.

etc
18.09.2007, 17:40
Второй вариант самый приемлимый. Можно ещё использовать не классы со стат. методами, а глобальные функции, например:

package functions {
public function myFunction():void {
trace('Hello!');
}
}

import functions.myFunction;

…

myFunction();

…

Xelat
19.10.2007, 02:28
2 __etc
Прошу прощения, а код

package functions {
public function myFunction():void {
trace('Hello!');
}
}

где (в каком файле) описывается, и как подключается к флэшке? Не видно чтобы в нём были описаны классы, сразу идёт функция. Если не сложно, опишите пожалуйста подробно что и где прописать, чтобы функция была доступна везде.

etc
19.10.2007, 10:36
Сохранить как myFunction.as в папку functions.

Xelat
20.10.2007, 00:46
Сохранить как myFunction.as в папку functions.
тогда судя по всему импорт надо делать непосредственно перед вызовом функции, т.е. импортировать везде и всюду, где эта функция используется.

etc
20.10.2007, 00:54
Само собой.

Xelat
21.10.2007, 20:44
А как тогда быть с глобальными переменными?

etc
21.10.2007, 20:48
Какими глобальными переменными?

miramax
23.10.2007, 00:52
Статические члены класса не подходят ?

Сэр Макс
23.10.2007, 13:51
Вообще весь AS3 направлен на ООП. А ООП подразумевает максимальное искоренение любых глобальных переменных (для использования именно как глобальных переменных).
Тоесть идеален третий вариант - передавать нужные обьекты с нужной информацией в нужные классы.
Например если у нас есть игра, то создать ей базовый класс с окном игры, в нем создать пару подклассов каких-нибудь предметов, в каждого записав его parent отдельной переменной, дабы обьект знал кто является его базовым классом. Лично я предпочитаю такой вариант.