我的閃存/ as3應用程序出現問題。我創造了大部分,現在我正在努力讓我的外部資源發揮作用。同步圖像加載動作腳本3閃存
我的應用程序由一個Controller類組成,它控制了一個應用程序流。一開始,它初始化AppInitializer類,它加載/生成整個應用程序內容(這是一個簡單的點擊遊戲)。
在AppInitializer中,我創建了一個遊戲中可用的項目數組。 Item的構造函數將path作爲參數(String)傳遞給資源(image)。然後,在構造函數中我把我的AssetsLoader類的靜態方法,它看起來像這樣:
public static function loadImage(path:String):BitmapData
{
completed = false;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event){completed = true;
trace("Loading completed");
e.target.removeEventListener(Event.COMPLETE, check);});
if (path == "")
loader.load(new URLRequest("images/default.png"));
else
loader.load(new URLRequest("images/" + path));
//while (!completed);
var image:Bitmap = new Bitmap((loader.content as BitmapData));
return image.bitmapData;
}
在哪裏完成是AssetsLoader的一個靜態變量。
第一個問題是:我創建了連續多項目的對象,因此該方法的LoadImage不應該是靜態的我猜(同樣有完整的變量),因爲在加載時,可能會出現問題。
第二個問題是:此刻我無法返回bitmapData(或位圖,它並不重要),因爲return語句將始終返回null - 因爲資源異步加載並且不會在時間應用程序到達return語句。如果我取消註釋令人懷疑的循環,則完整的事件從不會被調用。
我想問一下有經驗的ActionScript開發人員指出,將不需要改變我的應用程序的其餘部分,將解決這些問題的任何解決方案。 (我認爲可以通過對加載程序使用某種排隊方法來消除第一個問題,但迄今爲止,我堅持了第二個問題,並且沒有可能的解決方案)。
我也可以考慮在我的邏輯變化,這樣我就可以下載所有圖像資源投入到「地方」,之後只是使這些圖像的副本,我的目的。如果這更容易做到。
爲什麼不在你的Event函數中放入return語句和變量。或者使用具有該參數的回調代替回報。 –