2008-11-24 53 views
1

我有一個我已經加載Loader類的圖像列表,但我很難分配它們的唯一名稱。 我需要獨特的名稱,因爲我想在一段時間後刪除某些圖像。 有沒有辦法給裝載機分配一個名稱或一些獨特的標籤,所以我可以稍後刪除它們?謝謝。AS3 - 如何爲裝載程序指​​定名稱或標籤?

這裏是我的代碼

for (var i = startnum; i < endnum; i++){ 
    var thumb = panels[i][email protected]; 
    var thumb_loader = new Loader(); 
    thumb_loader.load(new URLRequest(thumb)); 
    thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded); 

    thumb_loader.name = i; 
    thumb_loader.x = (thumb_width + 20)*i; 
} 

我試着在其他功能使用getChildByName部分..

var myLoader:Loader = getChildByName("1") as Loader; 
myLoader.unload(); 

但它給我 錯誤#1009:無法訪問的屬性或方法空對象引用。

我試圖把thumb_loader爲全局變量,而做到這一點

var myLoader:Loader = thumb_loader.getChildByName("1") as Loader; 

但它仍然沒有工作。 謝謝。

回答

3

ActionScript 3中的所有顯示對象都具有name屬性。當你創建一個Loader對象,你可以像這樣一個名稱分配給它:

var myLoader:Loader = new Loader(); 
myLoader.name = "myUniqueName"; 
myLoader.load(....); 
addChild(myLoader); 

如果你想在你給它的名字來指代裝載機,使用getChildByName()方法。

var myLoader:Loader = getChildByName("myUniqueName") as Loader; 
myLoader.unload(); 

請當心,你已經使用addChild添加的裝載機(縣)顯示列表後getChildByName()只會工作()。否則,您將不得不創建一些內容來存儲對Loader對象的引用,例如Array,並通過該Array引用裝載器。例如,在循環外部,您可以創建一個名爲loadersArr的數組。在你的循環,你會怎麼做:

loadersArr["uniqueName"] = thumb_loader; 

然後你就可以通過loadersArr陣列是指你的裝載機與您的獨特的名字。

var loaderToUnload:Loader = loadersArr["uniqueName"]; 
loaderToUnload.unload(); 

沒有看到您的更多的代碼,它很難理解在此代碼所在的範圍和其中任何其他代碼,可嘗試引用這些裝載機所在。

+0

但它給了我這個錯誤 錯誤#1009:無法訪問空對象引用的屬性或方法。 – shibbydoo 2008-11-24 18:05:42

0

不知道我100%理解你的問題,但爲什麼不把它們放在一個對象映射,而不是一個列表,併爲他們唯一的名稱,如果你沒有他們...

var img:Image; 
var img_map:Object = new Object(); 
var last_added:int = 0; 
for each (img in yourListOfImages) 
{ 
    img_map["img_"+last_added] = img; 
    last_added++; 
} 

根據在您的環境(Flex或Flash)上,您可以使用UID生成器而不是上面簡單的唯一名稱。

0
package 
{ 
    import flash.display.Loader; 

    public dynamic class DynamicLoader extends Loader 
    { 
     public function DynamicLoader() 
     { 
      super(); 
     } 
    } 
} 

我相信Loader類是一個密封類,所以你想要創建這個類並使用它來代替普通的Loader類來給它任何你想要的屬性。我也相信,如果不使用這個DynamicLoader而不是普通的Loader,Loader類的名稱屬性可用。