
09.08.2008, 17:06
|
|
Регистрация: Jul 2008
Сообщений: 48
|
Про правильную организацию, про оптимизацию, и еще кое-что.
1. Создаю я спрайт, или, в моем случае - класс наследник спрайта. Хочу добавить листенера на мышку. Если добавляю листенера к себе, не работает, даже когда я аттачу спрайт к stage(вообще не работает, даже в области спрайта).
Добавить же сразу листенера к stage я не могу, т.к. в момент создания он null. Недодумали в адобе, вместо того чтобы сделать глобальный всеуказатель stage, они его сделали локальным для каждого спрайта, указывающим на глобальный когда он аттачится.
В общем, в результате мне приходится заводить отдельную однострочную процедуру, которую буду ручками вызывать ПОСЛЕ аттача моего спрайта к сцене. Неудобно. Есть способ лучше?
Заодно не получилось и удалить самого себя из списка stage. Тоже нельзя? Вызывал примерно так: this.stage.removeChild(this);
2. Оптимизационный вопрос. Насколько эффективно работает addChild/removeChild, и не лучше ли будет не удалять наследников, а запоминать указатель на них и ставить visible в false? Не будет ли лишних пенальти от приличного количества невидимых спрайтов у stage? И кстати, рендерит ли Flash спрайты с нулевой альфой? Или нулевыми scaleX/scaleY?
3. Как можно сделать глобальные функции rand(), abs(), sin/cos, которые можно будет вызывать без префикса Math? А то читаемость очень страдает.
|