PDA

Просмотр полной версии : Порядок выполнения скрипта


chingachgoog
06.07.2007, 14:18
Что-то никак не пойму :)

Есть swf-ка: 3 кадра (кейфрейма)
код в первом кадре

gotoAndStop(3);


код во втором кадре:

trace("root")


код во третьем кадре:

trace("root")
stop()


Во 2-м и 3-м кадрах стоит мувиклип Символ1 (отдельными кейфреймами),
внутри которого только строчка

trace("clip")


Теперь вопрос:
Результат трейса таков:

clip
root

А если в первом кадре поставить
код в первом кадре

gotoAndStop(2);


то

root
clip

?????

etc
06.07.2007, 14:38
Ну вообще-то два ключевых кадра на одном слое никуда клип не девают и новый клип в третьем кадре не создается, он инициализируется перед третьем кадром. А вот если расположить клипы в разных кадрах и на разных слоях, то никаких проблем нет.

chingachgoog
06.07.2007, 15:05
если расположить клипы в разных кадрах и на разных слоях, то никаких проблем нет.

Ну да, если их переименовать по-разному - тоже проблем нет...

новый клип в третьем кадре не создается, он инициализируется перед третьем кадром.

Мне показалось это странным.
Ведь если в клип вставить

trace(_parent._currentframe)


то он покажет, что инициализируется (выполняется именно в 3-м кадре), НО перед кодом в руте, хотя по идее код должен выполняться сначала в руте сверху вниз (если не указано иное)

etc
06.07.2007, 15:14
Ну вообще, перед входом в третий кадр объект уже был на сцене, in fact. Т.е. создается он во-втором ещё.

chingachgoog
06.07.2007, 15:39
Т.е. строго говоря, клип только В МОМЕНТ ИНИЦИАЛИЗАЦИИ, выполняет свой код ДО кода рута, а после инициализации, он выполняет свой код, когда головка родителя уже перешла на следующий кадр (т.е. ДО исполнения кода родителя на следующем кадре)?

etc
06.07.2007, 15:43
Нет, он весь свой код выполняет до рута. В целом, логически это верно — объект уже был создан на момент перехода в третий кадр.

chingachgoog
06.07.2007, 15:54
Т.е. в кадре выполняется СНАЧАЛА код дочерних мувиков, а ЗАТЕМ родительских? И только в случае инициализации мувиков порядок меняется?

etc
06.07.2007, 16:02
Не всегда. Порядок меняется, если клип создается в данном конкретном кадре. Сначала рут, потом клип. А т.к. в данном примере клип уже был создан ещё на втором кадре, его инициализация должна пройти раньше рута.

chingachgoog
06.07.2007, 16:10
Спасибо. Учту как факт.