2012-12-03 161 views
0

我想告訴一些圖片到我的應用程序在事件處理

  sourceAudioFile =(event.target as File); 
      sourceAudioFile.data; 

      var myLoader:Loader = new Loader(); 
      var url :URLRequest = new URLRequest("file:///" + sourceAudioFile.nativePath); 
      myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded); 
      myLoader.load(url); 

註冊監聽

private function onImageLoaded(e:Event):void 
{ 
      var image : Bitmap= new Bitmap(e.target.content.bitmapData); 
      image.scaleX = 0.5 ; 
      image.scaleY = 0.5 ; 
} 

註冊的一些屬性有什麼辦法讓我可以添加一些自定義的值Event.COMPLETE知道正在加載什麼類型的圖像。

像e.imageName,e.noOfImage我可以在完整的處理程序中訪問&當我註冊此事件時爲其提供值。

在此先感謝

回答

1

是的你可以嘗試註冊這樣的活動:

myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e:Event){ 

    dispatchEvent(new CustomEvent(CustomEvent.COMPLETE, "<imageType>")); 

}, false, 0, true); 

,並添加新類,擴展事件類:

public class CustomEvent extends Event { 

     public static const COMPLETE:String = "CustomEventComplete"; 

     public var imageType:String = ""; 

     public function CustomEvent(type:String, imageType:String = "", bubbles:Boolean = false, cancelable:Boolean = false){ 

      super(type, bubbles, cancelable); 

      this.imageType = imageType; 
     } 

     override public function clone():Event { 

      return new CustomEvent(type, customTarget, bubbles, cancelable); 
     } 

    } 

現在你可以爲CustomEvent.COMPLETE &註冊獲得聽衆的圖像類型。

+1

是的,現在試着註銷這個事件 –

+1

爲什麼不呢?使用弱事件偵聽器或者如果偵聽器在範圍內調用removeEventListener .... – loxxy

+0

如何將匿名函數傳遞給removeEventLIstener? –

1

你可以找出AHS被檢查的LoaderInfo的url屬性

private function onImageLoaded(e:Event):void 
{ 
var cli:LoaderInfo = e.target as LoaderInfo;//you added listener to the contentLoaderInfo property 
    trace(cli.url);//url of the media being loaded 
    //do something with it 
} 

也加載這太問題,你可以得到更復雜的asnwer您的問題:)

pass arguments to event listener

2

是的,有一個簡單的方法:

myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded(imageName, noOfImage)); 
myLoader.load(url); 

function onImageLoaded(imageName:String, noOfImage:int):Function { 
    return function(e:Event):void { 
    // Respective "e", "imageName" and "noOfImage" are available for you here. 
    } 
} 

如果您需要在以後進行刪除,第一行更改爲:

var functionOnImageLoaded:Function = onImageLoaded(imageName, noOfImage); 
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, functionOnImageLoaded); 

再後來就去做這樣的:

myLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, functionOnImageLoaded); 

我已經回答過此問題。 See it here.