Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как выполнить код на кадре после инициализации дочерних объектов? (http://www.flasher.ru/forum/showthread.php?t=123902)

Gaen 15.04.2009 13:12

Как выполнить код на кадре после инициализации дочерних объектов?
 
Есть кадр, содержащий код. В кадре лежит мувик, внутри мувика тоже содежится код. Сначала выполняется код, написанный на кадре, а затем - код внутри мувика.

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

iNils 15.04.2009 13:21

Код в кадре поместить в функцию, которую вызвать из клипа через _parent.имяФункции ()

Gaen 15.04.2009 13:28

Это же ужасно, не хотелось бы пользоваться такими костылями.

Допустим я делаю мувик и объявляю в нём некую функцию. Нужно иметь возможность дёргать его за эту функцию извне, причем мувик не знает, дёрнут ли эту функцию сразу (в коде кадра, на котором он лежит), или попозже (по какому-нибудь событию). Дёрнуть сразу естественно не получится, так как функция объявится после того, как отработает код в родителе, который эту функцию пытается вызвать.

iNils 15.04.2009 13:30

Тогда убрать клип со сцены и аттачить его. Его методы и свойства будут сразу доступны.

Gaen 15.04.2009 13:32

Аттачить программно - вариант раз.

Если мувик связать с классом и положить на сцену, его конструктор тоже выполнится только после кода родителя?

iNils 15.04.2009 13:47

Угу.
Все клипы лежащие на сцене, инициализирующий сверху вниз. Если пишите на AS2, то есть событие onLoad, которое срабатываете после инициализации клипа (в as1 оно работает только для _root), но я не помню, до или после инициализации вложенных клипов, так что если будете пробывать, то напишите плиз результат.
Я же, когда мне было надо дергать вложенные клипы, аттачил их*.

* Для упрощении аттача с кучей одноклассовых клипов раскиданных по сцене в немыслимых позах, я писал код в конструкторе, типа
Код AS1/AS2:

/// определение переменных класса
private static var _cx:Number = 0;
...
/// конструктор
trace ('this.attachMovie("id", "name' + _cx++ +'", this.getNextHighestDepth () , {_x:' + _x + ', _y:' +_y + ', _rotation:'+_rotation+'})');

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

Gaen 15.04.2009 13:56

Код AS1/AS2:

this.onLoad = function(){
        trace('test');
}

Если написать на кадре рута - выполняется после инициализации дочерних мувиков.
Если не на руте - не выполняется вообще.

iNils 15.04.2009 18:39

Я об этом писал. В не рута работает только в ас2 (ас2 - это классы, а не то что вы там в настройках показали)
Поэтому на кадрах это не пашет.

dimarik 16.04.2009 14:06

#initclip


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

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