一个Loader出现在两个MC中

时间:2012-01-07 16:59:17

标签: flash actionscript-3

根据我last question(我建议阅读它以完全理解这个问题)我得出结论,我必须使用几个装载机。起初我在想“哦,我只使用十六个装载机”,但我必须这样做吗?也许我应该只创造它们的八分之一?然后我找到了tutorial

如果我是正确的,我只需创建8个Loaders,然后addChild来纠正img1 / img2?

你觉得男人们怎么样?我会感谢你的回答。

1 个答案:

答案 0 :(得分:0)

我认为你只需要一个加载器,但这取决于你想要一次下载多少东西。 8个加载器将(可能)一次发送8个图像(当然,这可能受到服务器的限制)。您可以将所有图像分配到一个阵列,然后在需要的位置循环该阵列。如果你想加载8个图像,那么(使用链接示例中的代码)就像是:

import mx.controls.Loader;

var imgArr:Array = ["img1.jpg","img2.jpg",/* and so on */,"imgN.jpg" ];
var ldrArr:Array = [];

for (var :Number = 0;  < imgArr.length; ++) 
{
    ldrArr[i] = new Loader();
    ldrArr[i].contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading);
    ldrArr[i].load(new URLRequest(imgArr[i]));
}

function finishLoading(e:Event):void {
    // Get the current loader
    var curLdr:Loader = (e.target as Loader);
    curLdr.contentLoaderInfo.removeEventListener(Event.COMPLETE, finishLoading);

    addChild(curLdr); // you will have to fix this to actually load the image
}

但如果你只想要一个装载机,试试这个:

import mx.controls.Loader;

var imgArr:Array = ["img1.jpg","img2.jpg",/* and so on */,"imgN.jpg" ];
var ldr:Loader;

function startLoader() {
    if ( imgArr.length > 0 )
    {
        ldr = new Loader();
        ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, finishLoading);
        ldr.load(new URLRequest(imgArr.pop());
    }
}

function finishLoading(e:Event):void {
    ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE, finishLoading);

    addChild(ldr); // you will have to fix this to actually load the image

    // start over with next image:
    startLoader();
}