2009-11-01 40 views
1

,我有一個外部類ImageLoader,它根據請求加載圖像。在這一類中,我有一個事件處理程序:ActionScript 3:ProgressEvent的bytesLoaded屬性到AS3中的文檔類

ImageLoader的類

public function loadImg(path:String):void 
{ 
ldr = new Loader(); 
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, getProgress); 
var req:URLRequest = new URLRequest(path); 
ldr.load(req); 
} 

private function getProgress(e:Event):void 
{ 
dispatchEvent(new Event("PROGRESS_INFO")); 
} 

我想送下載進度的更新返回到主文檔類,並在屏幕上顯示出來,所以我想調度事件「PROGRESS_INFO」,然後得到傳遞的事件對象的信息,像這樣:

文檔類

private function getProgressInfo(e:Event):void 
{ 
trace(e.target.bytesTotal); 
} 

但是,這證明是徒勞的......關於如何從IMageLoader類中獲取進度信息的任何想法?

注意:我知道我可以添加bytesLoaded & bytesTotal到一個公共變量,但是我不會看到ProgressEvent類中bytesLoaded屬性更新的好處。有任何想法嗎?

回答

2

確保您的ImageLoader類擴展了EventDispatcher類。此外,您不應創建新事件,而應重新分派ProgressEvent。

private function getProgress(e:ProgressEvent):void 
{ 
dispatchEvent(e); 
} 

這應該在文檔類工作:

myImageLoader = new ImageLoader(); 
myImageLoader.addEventListener(ProgressEvent.PROGRESS, getProgressInfo); 

private function getProgressInfo(e:ProgressEvent):void 
{ 
trace(e); 
} 
+0

當然!你基本上分派了事件AS或事件。我喜歡它!血腥的天才!乾杯! – 2009-11-01 16:26:23