0

所以,我有一个 LoaderMax 实例从各种 URL 加载图像。我想将所有加载的图像添加到数组中。这是我的代码:

var photosArray:Array = new Array(5);
var imageLoadingQueue:LoaderMax = new LoaderMax({name:"mainQueue", onComplete:completeHandler});

for (var g:uint=0; g<5; g++)
{
    imageLoadingQueue.append(new ImageLoader("/img" + g + ".jpg", {name:"photo", container:photosArray[g], noCache:false, smoothing:true, width:126, height:126, scaleMode:"proportionalOutside"}));
} 

imageLoadingQueue.load();

private function completeHandler(e:LoaderEvent):void
{
    trace("finished loading pictures!");

  //the next two lines will return an error (saying that photosArray[1] is null)
    stage.addChild(photosArray[1]);
    photosArray[1].x = 250;
}

几个问题:

  1. 如果我将要加载的图像的容器设置为数组,它将不起作用。我无法访问数组内的图像,因为它说它是空的。
  2. 如果我将要加载的图像的容器设置为“this”(在附加新的 ImageLoader 时使用容器属性),并且在 completeHandler 上,将我的数组设置为 event.target.content,它有点工作(但它不是理想的)。问题是,通过这样做,图像在加载时出现在舞台上,我不希望他们这样做。

任何帮助将不胜感激。谢谢!!

4

2 回答 2

2

David 是对的,但我还想提一下,LoaderMax 的“内容”实际上是一个包含所有子内容的数组,所以为了简单起见,您可以使用它。请记住,ImageLoaders 会自动创建一个 Sprite(技术上称为“ContentDisplay”)以将图像放入其中,因此您可能不需要创建另一个 Sprite(容器的容器)。

var photos:Array = imageLoadingQueue.content;
stage.addChild(photos[1]);

另一个好处是它会立即创建 ContentDisplay Sprites,甚至在任何内容加载到其中之前,因此您可以在加载发生时(或之前或之后)根据需要放置它们并调整它们的大小。

于 2013-04-09T21:40:53.947 回答
1

容器必须是DisplayObjectContainer. ImageLoader将尝试使用 将图像添加到容器中addChild(),因此显然这不适用于空数组。为每个图像创建一个新Sprite图像并首先将其添加到数组中:

for (var g:uint=0; g<5; g++)
{
    photosArray[g] = new Sprite();
    imageLoadingQueue.append(new ImageLoader("/img" + g + ".jpg", {name:"photo", container:photosArray[g], noCache:false, smoothing:true, width:126, height:126, scaleMode:"proportionalOutside"}));
}
于 2013-04-09T14:46:16.483 回答