除了@Boon 提供的答案之外,这就是您实际设置图像队列的方式。
首先,您需要一个列表来存储所有仍需要加载的图像。这使您可以轻松定义任意数量的图像。它可以是“队列”:
var queue:Array = [
"http://interfacelift.com/wallpaper/previews/03177_orionnebulaintheinfrared@2x.jpg",
"http://interfacelift.com/wallpaper/previews/03175_purpleclouds@2x.jpg",
"http://interfacelift.com/wallpaper/previews/03173_goodmorning2013@2x.jpg"
];
接下来要做的是设置我所说的我们正在做的“核心”方法。它将处理加载下一个图像以及在队列为空时通知我们。它看起来像这样:
function loadNext():void
{
if(queue.length > 0)
{
// Notice here that we use .pop() on the queue, which will select and
// remove the last item from queue.
var req:URLRequest = new URLRequest( queue.pop() );
var photo:Loader = new Loader();
photo.load(req);
photo.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
}
else
{
// The queue is finished - dispatch an event or whatever you fancy to
// let the rest of the application know we're done here.
trace("Queue finished.");
}
}
然后当然是我们的监听函数来处理加载图像的完成。请注意,我们在这里调用loadNext()
- 这是仅在当前加载图像完成后才开始加载队列中下一个图像的关键。
function loadComplete(e:Event):void
{
addChild(e.target.content as Bitmap);
// Begin loading next image in the queue.
loadNext();
}
为了开始这个过程,我们当然只是使用它,如果队列为空,它将立即通知我们队列已完成,或者开始按顺序加载图像。
// Start loading the queue.
loadNext();
补充/整理:
如果您希望能够回收此代码或只是整理一下,您可以轻松地将其制作成一个类。可以调用该类ImageQueue
,其结构将包含上述queue
数组、loadNext()
方法和loadComplete()
方法。它还可以有一种add()
方法,以一种更简洁的方式将图像最初添加到队列中。
这是该课程的基础,如果您有兴趣,可以完成:
public class ImageQueue
{
private var _queue:Array = [];
public function add(image:String):void{ }
public function loadNext():void{ }
private function _loadComplete(e:Event):void{ }
}