首页 > 解决方案 > 如何在 AS3 中控制将图像加载到精灵

问题描述

如何控制将图像加载到精灵我有一个向量,其中有我要加载的图像的名称,但是要执行我使用 contentLoaderInfo 的循环使用偶数 init 属性它加载随机图像,它们是未按它们在数组中的顺序加载。我无法按照我尝试使用 Even.init Even.complete 的排列顺序将图像添加到舞台,我无法获得我希望的结果,否则我该怎么做

var lista_nombresPises:Array = new Array("ar.png","br.png","ch.png","co.png","it.png","ja.png","mx.png","pa.png","sp.png","US.png");
var nombresPaises_sprites:Array = [];
for(i=0;i<lista_nombresPises.length;i++){
    nombresPaises_sprites.push(new Sprite);
    nombresPaises_sprites[i].name = "pais"+(i+1);//Le asignamos el nombre
    direc= new URLRequest("Palabras/Paises/"+lista_nombresPises[i]);//Fue creado en el login
    var loadPaises:Loader = new Loader();
    loadPaises.load(direc);
    loadPaises.contentLoaderInfo.addEventListener(Event.INIT,cargaImagenBandera);
}
var indi = 0;
var posy = 118;
function cargaImagenBandera(eve:Event):void{
    nombresPaises_sprites[indi].addChild(eve.target.content);
    nombresPaises_sprites[indi].x = 65;
    nombresPaises_sprites[indi].y = posy;
    posy=posy+60;
    addChild(nombresPaises_sprites[indi]);
    indi++;
}

//Cargamos las Banderas de los paises
var lista_Banderas:Array = new Array("banAr.png","banBr.png","banCh.png","banCo.png","banIt.png","banJa.png","banMx.png","banPa.png","banSp.png","banUs.png");
var banderas_sprites:Array = [];
for(i = 0; i<lista_Banderas.length;i++){
    var direcBandera:URLRequest = new URLRequest("Palabras/Paises/Banderas/"+lista_Banderas[i]);
    banderas_sprites.push(new Sprite);
    var loaderBandera:Loader = new Loader();
    loaderBandera.load(direcBandera);
    loaderBandera.contentLoaderInfo.addEventListener(Event.INIT,cargarBanderas);
}

如果没有正确理解,我想要做的是图像总是以一定的顺序加载。例如,名称为 img1 的图像应始终首先加载。设法让它们按照数组中的顺序加载

标签: actionscript-3animationsprite

解决方案


加载是 AS3 中的异步操作。这意味着如果您批量请求加载少量文件,它们不一定会以相同的顺序完成加载。

但是,您甚至不需要等待它们完成加载,也就是说,如果您知道图像大小、不打算智能地自动调整行大小、不打算处理错误等等。您可以提前安排它们,然后将它们设置为加载。外部内容将在加载并可用时显示。

var baseURL:String = "Palabras/Paises/";
var aList:Array = [
    "ar.png","br.png","ch.png","co.png","it.png",
    "ja.png","mx.png","pa.png","sp.png","US.png"
];

for (var i:int = 0; i < aList.length; i++)
{
    // Create required objects.
    var aRequest:URLRequest = new URLRequest;
    var aLoader:Loader = new Loader;
    var aWrap:Sprite = new Sprite;

    // Form a proper URL.
    aRequest.url = baseURL + aList[i];

    // Arrange the (currently) empty container
    // to its designated position.
    aLoadex.x = 65;
    aLoader.y = 118 + 60 * i;

    // Start loading the external resource.
    aLoader.load(aRequest);

    // Loader subclasses DisplayObject and can be added
    // to the stage just as any other. It will display the
    // content it loads when the content is available.
    aWrap.addChild(aLoader);
    addChild(aWrap);

    // Replace the filename on the list with the
    // corresponding Loader instance, if you need them
    // in the future for anything.
    aList[i] = aWrap;
}

推荐阅读