任何人都可以解释一下,为什么loader.close不起作用? 顺便说一下,我知道从服务器上加载文件。
for (var p:Number = 0; p < itemsOnPage; p++)
{
if (itterationStep != SqlRec.itemsArray.length)
{
thumbImgLoader = new Loader();
var imgName:String = SqlRec.itemsArray[itterationStep]["img"];
thumbImgLoader.load(new URLRequest(GetXMLprefs.thumbsPath + imgName));
thumbLoadersArray.push(thumbImgLoader);
...
}
}
/////
if (ItemsBuilder.thumbLoadersArray)
{
if(ItemsBuilder.thumbLoadersArray.length > 0)
{
for (var i:Number = 0; i < ItemsBuilder.thumbLoadersArray.length; i++)
{
try
{
var obj:Loader = new Loader();
obj = ItemsBuilder.thumbLoadersArray[i];
obj.close();
trace(">> "+obj.close);
}catch (err:Error)
{
trace(err)
}
}
ItemsBuilder.thumbLoadersArray.splice(0, ItemsBuilder.thumbLoadersArray.length);
}
}
答案 0 :(得分:0)
你是否从追踪中得到了什么?
Flash有一个内部限制,它可以同时执行多少个同时加载。你在一个循环中加载了800个图像,这意味着第一个〜780左右将被最后20个左右覆盖。我一次加载的最大值大约为10(我认为BulkLoader有类似的东西)。如果要加载800个图像,请使用该数组来跟踪加载的内容。例如:
private var m_imagesLoaded:int = 0;
private var m_toLoad:Array = null;
private function _init():void
{
// create your array and set the first 10 or so loading
this.m_toLoad = new Array( 800 );
...
}
private function _onImageLoad( e:Event ):void
{
// load the next one in the list
this.m_imagesLoaded++;
this.m_toLoad[this.m_imagesLoaded].load();
// do whatever else
}
至于close()
,它是“Cancels a load() method operation that is currently in progress for the Loader instance。”如果load()
中没有Loader
,那么可能不会发生任何事情。
P.S。:在try
语句中,您每次都会创建一个新的Loader
,然后再将其分配给其他人。只需将其更改为
var obj:Loader = ItemsBuilder.thumbLoadersArray[i];