添加到@Boon提供的答案,這是如何去實際設置圖像隊列。
首先,您需要一個列表來存儲所有仍然需要加載的圖像。這使得您可以輕鬆定義任意數量的圖像。它可以是「排隊」:
var queue:Array = [
"http://interfacelift.com/wallpaper/previews/[email protected]",
"http://interfacelift.com/wallpaper/previews/[email protected]",
"http://interfacelift.com/wallpaper/previews/[email protected]"
];
接下來要做的是建立我所說的,我們在做什麼「核心」方法。它將處理加載下一張圖片,並在隊列爲空時通知我們。它看起來是這樣的:
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{ }
}
另外,GreenSock's'LoaderMax'和'BulkLoader'處理這個非常好了。 –
是的,很好的建議。 – Boon