PDA

Просмотр полной версии : Внешний SWF


dandelion
29.11.2013, 14:45
Добрый день!

Существует проект на AS3 в него пытаюсь загрузить внешние SWF. Всё загружается хорошо, но почему то не выполняется код на таймлейне вложенных в эту SWF клипов.

LoadedSWF (MovieClip)
- Clip1 на кадре 1
- Clip2 на кадре 4

В первых кадрах Clip1 и Clip2 стоит trace('success');
И после загрузки и добавления к stage почему-то второй trace не срабатывает. (В общем как и любой другой код). Ошибок тоже нет. Если Clip2 передвинуть на первый кадр то trace в нём заработает.

Добавлять пробовал и так

private function onCompleteHandler(loadEvent:Event):void
{
var tempClip:MovieClip = loadEvent.currentTarget.content;
addChild(tempClip)

}


И положить всё в один большой клип Main и уже его добавлять:


private function onCompleteHandler(loadEvent:Event):void
var tempClip:MovieClip = loadEvent.currentTarget.content;

var ClassDefinition:Class = tempClip.loaderInfo.applicationDomain.getDefinition("Main") as Class;
var _currentClip:MovieClip = new ClassDefinition();
addChild(currentClip);
}


Повторю что сами клипы загружаются и анимация в них работает, только код нет:(

Проект в FalshDevelop использую Flex SDK 4.6 с AIR 3.9, под плеер 11.5

Спасибо!

Nucer
01.12.2013, 11:58
Суть проблемы описана сумбурно, но думаю что решение в следующем:
1) private function onCompleteHandler(loadEvent:Event):void здесь я так понимаю вы слушаете событие, приходящее от LoaderInfo, соотв. и loadEvent.currentTarget также будет являться экземпляром класса LoaderInfo. Обращаться к загруженному мувиклипу нужно как loadEvent.currentTarget.loader.content
2) В загружаемых клипах ВСЕГДА ставьте листенер на Event.ADDED_TO_STAGE и по этому событию - уже начинайте выполнение своего кода. В противном случае вы не можете предсказать момент, когда код в загружаемом мувике начнёт выполняться!

p.s. И вообще код на таймлайне, тем более вложенных мувиков - очень очень ненадёжный вариант. Лучше не ленитесь - делайте классы для мувиков, в которых нужен какой то код, сложнее чем stop() и gotoAndPlay()