Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   AS3, как самоудаляться и запускать при этом метод из основного класса (http://www.flasher.ru/forum/showthread.php?t=133488)

Sergko 07.12.2009 00:28

AS3, как самоудаляться и запускать при этом метод из основного класса
 
Подскажите пожалуйста!

У меня основной класс создает две кнопки - экземпляры одного класса button(пользовательский). При нажатии одной из них, обе удаляются с экрана и запускается анимация. Как сделать так, чтобы по окончанию анимации она самоудалялась, а также снова создавала эти две кнопки???

Очень прошу!

Jewelz 07.12.2009 10:10

при окончании анимации диспатчите Event, ловите его в основном классе и делайте дальше что душе угодно :)

например можно в последнем кадре анимации прописать
Код AS3:

dispatchEvent(new Event("end"));

чтобы в каждом кадре не проверять окончание

Juice_Green 07.12.2009 10:54

to Jewelz:
пользовательские классы и и куски кода на кадры вешать - плохая практика

Котяра 07.12.2009 11:06

можно использовать в основном классе
Код AS3:

animation.play();
animation.addFrameScript(animation.totalFrame-1, endPlaying);


Jewelz 07.12.2009 13:00

Цитата:

Сообщение от Juice_Green (Сообщение 870692)
to Jewelz:
пользовательские классы и и куски кода на кадры вешать - плохая практика

к примеру у меня есть библиотека с MovieClip в котором нарисована анимация персонажа: поворот, прыжок, удар

соответственно я запускаю ту или иную анимацию по какому-то действию пользователя, как мне тогда лучше узнать что анимация остановилась и можно делать следущее действие?

gloomyBrain 07.12.2009 13:47

Читайте про свойства currentFrame, currentFrameLabel в help'е

Juice_Green 07.12.2009 14:15

Jewelz, не увидел убедительных аргументов, просто потом разбираться в вашем коде будет очень сложно другому человеку, да и сами запутаетесь, когда забудете где делаете диспетчирезацию события

Jewelz 07.12.2009 15:47

Цитата:

Сообщение от Juice_Green (Сообщение 870757)
Jewelz, не увидел убедительных аргументов, просто потом разбираться в вашем коде будет очень сложно другому человеку, да и сами запутаетесь, когда забудете где делаете диспетчирезацию события

я вам аргументов и не приводил, я спросил как лучше сделать то, что я предложил без кода в последнем кадре

как бы вы сделали? мне очень интересно, потому что я знаю что писать код в кадрах не есть хорошо (сам использую только stop(); и dispatchEvent()), если есть более удобный способ, я с радостью приму его во внимание

Котяра 07.12.2009 17:35

я писал выше - уточняю:
Код AS3:

public function playAnimation():void
{
animation.play();
animation.addFrameScript(animation.totalFrame-1, endPlaying);
}
public function endPlaying():void
{
animation.stop();
// если надо то диспатчим событие, хотя мы уже в хэндлере события
}


Jewelz 07.12.2009 17:46

Котяра, с вашим кодом я абсолютно согласен, только он не удобен если на одной таймлайн находится несколько анимаций, и не известен точный кадр их окончания, + анимация может быть перерисована и длительность увеличится => изменится номер последнего кадра


Часовой пояс GMT +4, время: 14:16.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.