actionscript-3 - 如何在 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 的图像应始终首先加载。设法让它们按照数组中的顺序加载
解决方案
加载是 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;
}
推荐阅读
- parallel-processing - 跟踪消息队列中的因果关系
- xaml - 将 XAML UpgradeTemplate 与 TFS 2015 \ 2017 一起使用
- javascript - 用 jQuery 交换列
- c++ - 如何将“cout”、“cerr”、“stdout”和“stderr”从 C++ 程序定向到单个文件
- python - ImportError:无法导入名称“迭代器”
- codeigniter - 如何在codeigniter中重定向旧的php路由
- php - 如何跳过部分 HTML 代码
- vba - Excel-VBA Range.Find 方法错误处理
- android - 当我的应用程序正在使用它时,防止其他相机应用程序使用相机
- angular - Angular 和新的 RxJS 导入系统