PDA

Просмотр полной версии : Управление flash анимацией


ulu
22.04.2009, 00:28
Уважаемые,

Пытаюсь управлять персонажем, созданным во Flash. У персонажа несколько анимаций, каждая реализована в виде отдельного символа, и эти символы расставлены по фреймам. Я сделал ему класс документа и объявил все инстансы, как полагается.

Почему-то если я начинаю двигаться по фреймам, мне никак не получить ссылку на экземпляр символа. Например, в первом фрейме у меня экземпляр по имени Joy. Пока я никуда не двигаюсь, я могу им пользоваться. Как только я двинулся во второй фрейм, он становится null. Ну ладно, это я могу понять, ведь на сцене во втором фрейме его нет. Но если я вернусь в первый фрейм, его там тоже нет!

Пытаюсь обратиться через getChildAt, мне возвращают null опять.

Подскажите, чем объяснить такое странное появление null вместо экземпляра, и как мне вообще быть? Может, надо файл с анимацией как-то по-другому организовывать?

Спасибо!

wvxvw
22.04.2009, 05:04
>> Пытаюсь обратиться через getChildAt, мне возвращают null опять.
Наверное рано обращаетесь, вообще должно работать именно так.

ulu
22.04.2009, 15:21
Да, я это делал в конструкторе.. знаю, что это плохая идея, я просто экспериментировал.

Добавлено через 2 часа 7 минут
Выясняется:
Если это делать сразу после вызова gotoAndStop, то getChildAt(0) возвращает null.
Если какое-то время спустя, или в обработчике EnterFrame, то все в порядке.
Получается, что gotoAndStop асинхронный, то ли?

Добавлено через 3 часа 22 минуты
Вот, оказывается, это известные грабли:
http://bugs.adobe.com/jira/browse/FP-43

Добавлено через 5 часов 49 минут
В общем, я нашел несколько хакерских решений:
http://www.kirupa.com/forum/showpost.php?p=2113726&postcount=358
http://www.xllusion.net/ed/2008/05/24/as3-addframescript-method/
http://www.scottgmorgan.com/blog/index.php/2008/03/06/accessing-displayobjects-on-the-timeline-after-a-gotoandstop-or-gotoandplay/

Наслаждайтесь!