PDA

Просмотр полной версии : Вложенность мувиков в приаттаченном клипе подгруженной флешки


iforev
06.02.2008, 21:00
Есть флешка mainElementsPackage.swf с несколькими клипами в библиотеке, 1 из клипов представляет собой 2 вложенных друг в друга мувика с именами 'aaa' и 'bbb' (вложены на сцене, а не программно добавлены), он ассоциирован с классом Sym3. Загружаем mainElementsPackage.swf в основную флешку, по окончании загрузки в основной флешке говорим

var MI = new Sym3();
addChild(MI);

на что получам ошибку:

ReferenceError: Error #1056: Cannot create property aaa on Sym3.
at flash.display::Sprite/flash.display:Sprite::constructChildren()
at flash.display::Sprite$iinit()
at flash.display::MovieClip$iinit()
at Sym3$iinit()
at MenuItem$iinit()
at rootMEPClass/::frame1()
ReferenceError: Error #1056: Cannot create property aaa on Sym3.
at flash.display::Sprite/flash.display:Sprite::constructChildren()
at flash.display::Sprite$iinit()
at flash.display::MovieClip$iinit()
at Sym3$iinit()
at rootClass/onMEPLoaded()

То же самое происходит, если в клипе не мувики, а текстовое поле. При этом я заметил, что если поместить в клип графику или создать текстовое поле программно, то никакой ошибки при выполнении главной флешки не возникает. Собственно, вопрос: как заставить работать такой "сложный" клип, приаттаченный из подгруженной флешки? У меня в этих клипах может содержаться сложная графика и собирать всё программно из частей очень не хотелось бы

etc
06.02.2008, 23:03
Если бы ваши флешки лежали в разных папках, вы бы вообще основную флешку скомпилировать не смогли бы. А так у вас на самом деле класс Sym3 в основной и подгружаемой флешках отличаются. В основной не объявлены aaa и bbb (их объявляет компилятор CS3). После подгрузки интерпретатору сносит башню.
Используйте getDefinition вместо прямого создания класса Sym3 таким образом, чтобы в основной флешке его не было.
И ещё отключите автоматическое объявление полей-ссылок на клипы.

iforev
07.02.2008, 01:55
Большое Вам человеческое спасибо, работает.
А что за поля-ссылки на клипы, просветите или скажите, где почитать?

etc
07.02.2008, 02:02
Поля-ссылки? Это обычные публичные свойства, которые ссылаются на клип и имеют такое же имя, как и клип, на который оно ссылаются. По факту, зло.
Отключается в настройках AS3 для проекта. Но тогда потребуется самому писать все эти public var aaa:MovieClip, т.к. CS3 не позволяет отключить constructChildren совсем, что есть плохо.