Один экран загрузчика с несколькими .fla - PullRequest
0 голосов
/ 23 апреля 2011

У меня есть экран загрузчика в одном .fla и нескольких других .fla файлах, которые должны его использовать. Как я могу использовать этот один загрузчик со всеми другими файлами? спасибо.

1 Ответ

1 голос
/ 23 апреля 2011

Не уверен, почему вас голосуют, это довольно стандартный вопрос во Flash-стране.

По сути, файл .swf, который публикуется вашим предзагрузчиком .fla, должен иметь возможность загружаться, а затемотображать .swf, опубликованные другими .fla.Вы бы поместили код, похожий на этот, в ваш preloader:

var swf1:MovieClip;
var swf2:MovieClip;

function loadFirstSwf():void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, firstSWFLoaded);
loader.load( new URLRequest( "swf1.swf" ));
}

function firstSWFLoaded(e:Event):void {
swf1 = MovieClip(e.currentTarget.content);
e.currentTarget.removeEventListener(Event.COMPLETE, firstSWFLoaded);

loadSecondSwf();
}

function loadSecondSwf():void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, secondSWFLoaded);
loader.load( new URLRequest( "swf2.swf" ));
}

function secondSWFLoaded(e:Event):void {
swf2 = MovieClip(e.currentTarget.content);
e.currentTarget.removeEventListener(Event.COMPLETE, secondSWFLoaded);
whatever();
}

function whatever():void {
// logic here to do whatever you need to do next.
}

loadFirstSwf();

Обратите внимание, что это не самая эффективная архитектура - я старался сделать ее максимально простой, не будучи уверенным в вашем уровне AS3опыт.Несколько вещей, на которые стоит обратить внимание:

1) Вы вызываете их последовательно.Когда первое заканчивается, оно получает второе и т. Д. Вы можете добавить третье и четвертое и т. Д. Это должно сделать явный порядок, в котором они прибывают.Вы также можете запустить их все сразу, но это требует некоторой дополнительной логики, чтобы убедиться, что вы знаете, что происходит откуда, потому что они могут закончить в другом порядке, чем вы их запускаете.Это распространенная ошибка новичка, и я пытаюсь настроить ее так, чтобы вам не приходилось с ней сталкиваться.

2) Убедитесь, что вы удаляете прослушиватели событий из загрузчиков после того, какВы извлекаете загруженный .swf.Это просто гарантирует, что они не останутся в памяти навсегда.

3) Вы на самом деле не слушаете прогресс, используя этот пример - если вы хотите, вы можете использовать loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler), а затем поместите код в обработчик прогресса для прослушивания фактического текущего состояния загрузки.

Итак, приведенный выше пример очень прост, но должен работать.Если вы хотите получить что-то более надежное или иметь дело со многими дочерними SWF-файлами, обратите внимание на использование чего-то вроде LoaderMax от GreenSock - это бесплатная сторонняя библиотека, которая помогает вам легко управлять загрузкой нескольких файлов.

Ура, и я надеюсь, что это помогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...