Как я могу контролировать загрузку изображений в спрайт в AS3 - PullRequest
0 голосов
/ 18 июня 2020

Как я могу контролировать загрузку изображений в спрайт У меня есть вектор, в котором у меня есть имя изображения, которое я хочу загрузить, но для выполнения цикла, в котором я использовал contentLoaderInfo С свойством even init Он загружает случайные изображения , они загружаются не в том порядке, в котором они находятся в массиве. Я не могу добавить изображения на сцену в том порядке, в котором я пытался использовать Even.init Even.complete, и я не могу получить результат, который я sh иначе, как я мог бы это сделать

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 всегда должно загружаться первым. удалось загрузить их в такой последовательности, как в массиве

1 Ответ

1 голос
/ 18 июня 2020

Загрузка - это асинхронная операция в AS3. Это означает, что если вы запросите массовую загрузку нескольких файлов, они не обязательно завершат sh загрузку в том же порядке.

Однако вам даже не нужно ждать, пока они закончатся sh загрузка, то есть если вы знаете размеры изображения, не собираетесь автоматически изменять размер строки, не собираетесь обрабатывать ошибки и так далее. Вы можете расположить их заранее, а затем настроить их загрузку. Внешний контент будет отображаться, когда он будет загружен и доступен.

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;
}
...