Орден внешней загрузки SWF - PullRequest
0 голосов
/ 08 апреля 2011

Я загружаю SWF через файл XML.Я хочу, чтобы они были добавлены на сцену в том же порядке, в котором они появляются в XML.Проблема в том, что они добавляются на сцену только тогда, когда они полностью загружены.

Любые идеи, как мне обойти это.


Это мой xml (_config.xml)

    <campaign>
        <component SWFsource="logo.swf"/>
        <component SWFsource="gallery.swf"/>
        <component SWFsource="video.swf"/>
        <component SWFsource="poll.swf"/>
        <component SWFsource="facebook.swf"/>
    </campaign>

Мой код AS3

var loaders:Array = []; // an Array of loaders instead of a single loader
var xml:XML;
var xmlList:XMLList;
var xmlLoader:URLLoader = new URLLoader();

xmlLoader.load(new URLRequest("components.xml"));
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event:Event):void
{
    xml = XML(event.target.data);
    xmlList = xml.children();
    for (var i:int = 0; i < xmlList.length(); i++)
    {
        var swfLoader:Loader = new Loader(); // local instead of member variable
        swfLoader.load(new URLRequest(xmlList[i].@SWFsource));
        swfLoader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitHandler);
    }
}

function loaderInitHandler(event:Event):void
{
    var swfInfo:LoaderInfo = event.target as LoaderInfo;
    var swfLoader:Loader = swfInfo.loader; 
    if (loaders.length > 0) {
        var lastLoader : Loader = loaders[loaders.length-1]; 
        swfLoader.y = lastLoader.y + lastLoader.height + 10; // positioning happens here
    }
    addChild(swfLoader);
    loaders.push(swfLoader);
}

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Что вы можете сделать, это добавить загрузчики на сцену сразу после их создания, даже если их содержимое еще не загружено. Таким образом, загруженный контент в конечном итоге складывается в том порядке, в котором он появляется в файле XML.

{
   var swfLoader:Loader = new Loader(); // local instead of member variable
   swfLoader.load(new URLRequest(xmlList[i].@SWFsource));
   swfLoader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitHandler);
   addChild(swfLoader);
}
0 голосов
/ 08 апреля 2011

Поскольку вы не можете контролировать порядок загрузки SWF-файлов, вам необходимо:

дождаться, пока они все будут загружены и , затем добавить их вэтап в нужном порядке.

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