PDA

Просмотр полной версии : Последовательность инициализации клипов


iNils
12.11.2005, 21:35
Смотрим аттач.
Создаем два класса Сlass1 и Class2 и два мувиклипа (экземляров этих классов).
Помещаем мувиклип класса Class1 в мувиклип класса Class2.
Но, Class2 инициализируется раньше Class1. Поэтому внутри #initclip обратиться к методом экземляра класса Class1 не получается (это при том что порядок в #initclip для Class1 стоит 1, а для Class2 - 2).

Можно приаттачить из библиотеки клип первого класса
this.attachMovie ("lib1", "mc", 0); (в примере закоментирован), тогда все работает.

Попытка вызвать Class1.apply (this.mc); (в примере закоментирован) вызывает только функцию описывающую Class1. Вызов внутри нее метода init() не работает.

Вопрос. Как заставить экземляр класса Class1 инициализироваться первым?

Nirth
13.11.2005, 02:36
сейчас нет возможности протестить. но вот выходы.

1)
поставить галочку на import in first frame

2) если у тебя будет прелоадер, то следовать советам Колина Мука насчет АС2 классов.
в первый кадр вставляешь прелоадер, в пятый кадр за пределами сцены вставляешь свои классы, после чего уже на десятом кадре начинаешь их юзать(можно обойтись в три кадра, но кто знает какие могут быть глюки)

3) попробуй юзать order в #initclip,

#initclip 1
//your class1


лично я юзаю второй способ. ибо юзаю АС2 и инитклипом пользовался лиш трижды, и ито в туторах

iNils
13.11.2005, 02:42
1-2. Это точно тут не причем
3. Стоит order.

Все сделано на as1. Вариант на as2 не подходит. Но решение просто должно быть. Раз c attachMovie все работает, значит должна быть возможность вызвать и вручную. Мне так кажется.

А зипе есть наглядный пример.

iNils
13.11.2005, 05:02
Вроде нашел решение.
Надо внутри _global.Class2 = function () {
написать
this.mc.__proto__ = new Class1 ();

Спасибо Nirth, за попытку помочь разобраться.