Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Программная замена movie clip в анимации (http://www.flasher.ru/forum/showthread.php?t=144682)

Shalom 18.09.2010 14:07

Программная замена movie clip в анимации
 
Допустим, я создал в Flash CS анимацию костра CampfireMC, содержащую child-клип:
Код AS3:

m_fire:FireMC

FireMC содержит анимацию пламени.
CampfireMC управляет проигрыванием m_fire, например, для последнего кадра CampfireMC добавлен action:
Код AS3:

m_fire.gotoAndStop(m_fire.totalFrames)

Вопрос: как при помощи actionscript заменить (именно заменить, а не удалить/добавить, так как gotoAndStop в анимации перестанет работать) анимацию
FireMC на другую анимацию FireMC2?

пробовал такой прием, не работает:
Код AS3:

var campfire:CampfireMC = new CampfireMC();
// Заменяем объект, на который ссылается m_fire
campfire.m_fire = new FireMC2();
campfire.gotoAndPlay(0)


КорДум 18.09.2010 15:07

Как очень хороший вариант - это собирать костер исключительно программно. И никаких проблем не будет

iNils 18.09.2010 15:11

Shalom, для оформления своего кода надо использовать теги [code][/code]

КорДум 18.09.2010 15:12

А вообще - сделать огонь тоже контейнером, где в кадрах будут разные анимации огня, затем по gotoAndStop переходить на нужный.

f.g.programmer 18.09.2010 15:21

Можно так.
m_fire = мувик-контейнер, содержащий FireMC, и больше ничего

для последнего кадра CampfireMC:
Код AS3:

var m:MovieClip = m_fire.getChildAt(0) as MovieClip;
m.gotoAndStop(m.totalFrames);

Код AS3:

var campfire:CampfireMC = new CampfireMC();
campfire.m_fire.removeChildAt(0);
campfire.m_fire.addChild(new FireMC2());
campfire.gotoAndPlay(0);


Shalom 18.09.2010 16:30

Цитата:

Сообщение от iNils (Сообщение 936847)
Shalom, для оформления своего кода надо использовать теги [code][/code]

Благодарю за правку моего поста, буду знать на будущее.

f.g.programmer, метод конечно, не очень красив, но работает, огромное спасибо =)
Похоже, что красиво эта проблема не решается =\

Psycho Tiger 18.09.2010 16:54

В методе gotoAndPlay нумерация кадров начинается с 1.

f.g.programmer 18.09.2010 18:56

Цитата:

Сообщение от Psycho Tiger (Сообщение 936876)
В методе gotoAndPlay нумерация кадров начинается с 1.

Знаю, но поставить 0 в gotoAndPlay кажется очень естественным, поэтому всё время забываю, что это неправильно.
Те кто писал что-нибудь на jsfl возможно знают, что там доступ к кадрам начинается от 0.


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

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