0
最近在一個項目中,我配置了自定義Loader類如下 首先,我定義我的裝載機作爲一家民營variabelAS3裝載機類的最佳實踐
private var _myLdr:Loader
//Then in the constructor
_myLdr = new Loader();
_myLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, doneImgLoad);
_myLdr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
_myLdr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
然後終於,當我需要加載一個新的資產我打電話通過公共方法
_myLdr.load(new URLRequest ('myswftoLoad.swf'));
到目前爲止好....除非你使用的FlashPlayer 9.024的調試版本來查看您的網頁在這種情況下,你會得到
我Loader實例ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::Loader/_load()
WTF ??? !!
所以糾正我需要實例化一個新的裝載機每次我打開一個新的資產。
有人能告訴我哪種方法會被認爲是「最佳實踐」嗎?
試過了,我仍然得到「 引發ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子。 \t在flash.display使用::裝載/卸載()」 ....但奇怪的是,我只用了9.024版本的調試播放器,而不是調試播放器版本10得到的錯誤。每次加載外部資產時創建一個新的Loader實例的另一個原因似乎與直覺相反,我認爲每個新的Loader實例都會在應用程序使用的內存中添加少量內容。在我的情況下,該應用程序在一個信息亭設置中使用,我試圖避免任何內存泄漏.... – 2009-12-09 10:47:59
我們將假設'最佳實踐'將創建新的Loader實例(每次與關聯的偵聽器「。但也有一個'清除'方法,可以將顯示列表及其監聽器中的加載器除去。 – 2009-12-09 11:00:11
您是否將'loader.content'添加到其他父代?默認情況下,它將是相應'Loader'的子代加載它的對象 - 我想unload方法可能會調用'loader.remove(loader.content)',如果你將loader.content添加到其他東西,將會失敗。 – Amarghosh 2009-12-09 11:25:49