Показать сообщение отдельно
Старый 12.06.2011, 20:14
SiDDD вне форума Посмотреть профиль Отправить личное сообщение для SiDDD Найти все сообщения от SiDDD
  № 12  
Ответить с цитированием
SiDDD

Регистрация: Oct 2006
Сообщений: 26
Упростил код до двух строчек:

Код AS3:
// код фрейма
 
someMovieClipFromScene.gotoAndStop(someFrame);
 
var mс:MovieClip=new BlaBlaFromLibrary();


someMovieClipFromScene.gotoAndStop(someFrame) тутже вызывает Event.FRAME_CONSTRUCTED..

..далее выполняется код из фреймов У ВСЕХ клипов на сцене по порядку (хотя код из нашего фрейма еще не завершен!)

Если gotoAndStop/gotoAndPlay несколько - будет столько же событий FRAME_CONSTRUCTED (но ВСЕ клипы уже обрабатываться не станут а выполняется только код из фрейма - куда отсылает goto)

И тут у Flash едет крыша и любой новый клип "родится мертвым":
б) если фрейм один - код фрейма не выполняется
а) если фреймов несколько - в следующем кадре новый клип начнет проигрываться СРАЗУ СО ВТОРОГО фрейма



Можно добавить принудительный вызов первого фрейма...

Код AS3:
// код фрейма
 
someMovieClipFromScene.gotoAndStop(someFrame);
 
var mс:MovieClip=new BlaBlaFromLibrary();
mc.gotoAndPlay(1);

...или переставить строчки местами и всё будет работать как надо:

Код AS3:
// код фрейма
 
var mс:MovieClip=new BlaBlaFromLibrary();
 
someMovieClipFromScene.gotoAndStop(someFrame);

Вот такие вот грабли. Отсюда мораль - если пишете код в фрейме - СПЕРВА нужно создать все новые клипы а потом уже выполнять gotoAndStop/gotoAndPlay!


Последний раз редактировалось SiDDD; 12.06.2011 в 20:19.