2010-02-21 69 views
1

如何創建一個裝載機數組?裝載機數組?

大圖:

我已經寫了一個flex的映射程序。我想更改我的映射程序,以便我需要做的就是放入一個新的xml文件,而不是進入我的flex文件並添加我需要的項目加載器的確切數量。所以我想我正在尋找一個加載器數組,可以加載我的XML文件中的圖像文件。

xml文件例如:

<locations> 
     <location> 
     <name>Big Star</name> 
     <street>123 Some St.</street> 
     <city>City</city> 
     <state>XX</state> 
     <zip>555555</zip> 
     <lat>12.34567</lat> 
     <long>-67.54321</long> 
     <iconFile>bigStar_icon.gif</iconFile> 
     <imageFile>bigStar_img.swf</imageFile> 
     <motion>no</motion> 
     <featured>yes</featured> 
     <category>Grocery</category> 
     </location> 
</locations> 

這個XML有時可有2000點的位置。

+0

怎樣才能創建一個數組? – 2010-02-21 20:31:03

+0

一個人如何? – 2010-02-21 22:37:17

回答

1

是的,這是一個非常糟糕的問題。從字面上看(如果開玩笑):

var loaders:Array = [new Loader(), new Loader()]; 

試圖讀入你問什麼,它聽起來就像你要加載了一大堆東西,進行處理所有負載一起莫名其妙......如果你有問,你會掙扎。

雖然你可以嘗試使用Bulk Loader庫,這對你來說是合理的。可能還有其他人。

+0

我想創建加載器從XML中指定的文件名加載SWF的,所以我不知道如何創建所有這些加載器。有沒有更好的方法來處理它? – Phil 2010-02-21 20:52:38

+0

你的意思就像一個循環? – 2010-02-21 20:58:58

+0

我正在嘗試在循環中執行此操作。 – Phil 2010-02-22 11:46:59

1

不直接回答這個問題,因爲它有點含糊不清+ @alecmce已經給出了答案(我也會在這種情況下爲BulkLoader加載器隊列)。

但是,由於前段時間我注意到一個類似的問題,我只想指出,立即實例化所有的加載器只是感覺有點不對。

只是存儲url並處理它們一個接一個是不是合適?

基本例如: (當心我打它在未經測試...)

// So here's the point: only Strings are stored ... 
var urls:Array = new Array('image1.jpg','image2.jpg',image3.jpg); 

loadNext(); 

function loadNext() 
{ 
    if(urls.length() == 0) 
     return; 

    load(urls.shift()) 
} 

function load(url:String):void 
{ 
    // The loader is created lazily just before before we need it 
    var loader:Loader = new Loader(new URLRequest(url)); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded) 
    loader.load(url); 

} 

function onLoaded(e:Event):void 
{ 
    event.target.removeEventListener(Event.COMPLETE, onLoaded); 
    addChild(event.target.content); // ... or whatever has to happen here. 
    loadNext(); 
} 
+0

我編輯了我原來的帖子以提供更多信息。 – Phil 2010-02-22 11:46:17

+0

這是一個有趣的方法西奧,但我會提防它。如果您使用Loader加載某些內容,請將其內容移到不同的顯示對象中,這樣您將很難再次從內存中移除它。 – alecmce 2010-02-22 18:35:58

+0

您也失去了能夠添加裝載程序以自行登臺的好處,並且在資產準備好時讓資產顯示,這意味着您將競爭條件添加到您的代碼中。讓我們假設你加載了一堆行星並想要定位和確定它們的大小,但是位置和尺度邏輯不會等待加載週期完成......如果所有行星都存儲在加載器中,那麼你可以即使在內容加載之前,也可以定位加載器和位置並對其進行縮放。 這不是一個錯誤的方法,只是想一想! – alecmce 2010-02-22 18:36:27