關於回調函數傳參數問題[批量加載中會經常用到]

方式一: 1.用內聯函數傳參 (只適用於一個回調加載,多個時候不行) 例:
比如我們要在callbackFunction函數中傳遞一個字符串'id is:'和一個整型15,實現方法請參見如下代碼:

var str:String = 'id is:';

var num:int = 15;


Alert.show("是否刪除該條目?","確認刪除",Alert.YES|Alert.NO,this,function(e:CloseEvent):void{callbackFunction(e,str,num)});


private function callbackFunction(event:CloseEvent,str:String,num:int):void{
        if(Alert.YES == event.detail){
            //當點擊YES時的操作
            Alert.show(str+num.toString(),"您點擊了YES按鈕");
        }else{
            //當點擊NO時的操作
        }
 } 


 方式二:用自定義事件(有點小問題)

                

package {
   
   import flash.events.Event;
 
   public class CustomEvent extends Event {
     
      public static const CUSTOM:String = "custom";
     
      public var arg:*;
     
      public function CustomEvent(type:String, customArg:*=null,
                                  bubbles:Boolean=false,
                                  cancelable:Boolean=false) {
         
         super(type, bubbles, cancelable);
         
         this.arg = customArg;
         
      }
           
      public override function clone():Event {
         return new CustomEvent(type, arg, bubbles, cancelable);
      }
     
      public override function toString():String {
         return formatToString("CustomEvent", "type", "arg",
                               "bubbles", "cancelable", "eventPhase");
      }
   
   }
 
}


方式三:推薦(Dictionary)用Dictionary保存Loader

private var hashmap:Dictionary = new Dictionary ;   //存放Loader[e.target]對象
				for each(var path:String in arrpath){
					var loader:URLLoader = new URLLoader();
					loader.addEventListener(Event.COMPLETE,onLoadComplete);   //回調函數傳參數
					hashmap[loader] = {path:path , i:'i'}  ;  //設置參數
					loader.load(new URLRequest(path));
				}

/**
		 * callback function for loader
		 * */
		private function onLoadComplete(e:Event):void{
			var loader:URLLoader = e.target as URLLoader ;
			var params:Object = hashmap[loader] ;
			trace(params) ;
			
			var content:String = e.target.data as String ;
			//var path:String = e.arg as String ;
		}


發佈了340 篇原創文章 · 獲贊 25 · 訪問量 98萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章