프록시를 통해 매개변수 전송
package com.xlands.utils {
import flash.display.InteractiveObject;
import flash.utils.Dictionary;
public class Delegate {
/**
* createListener
*/
private static var funDictionary:Dictionary = new Dictionary;
/**
*
*/
public static function create(method:Function, ... additionalArgs):Function {
return createWithArgs(method, additionalArgs);
}
/**
* @desc (2)
* @detail , ,
*
* @usage
* xxx.addEventListener(Event.xxx,Delegate.createListener(funNeedAddParam,xxx,1);
*
* :( )
* xxx.removeEventListener(Event.xxx,Delegate.getListener(funNeedAddParam,xxx);
* Delegate.delFunction(funNeedAddParam,xxx);<------ ... funDictionary
*
* by haosheng.lin
* @param method
* @param additionalArgs
* @return
*
*/
public static function createListener(method:Function, $listenerCurrentTarget:InteractiveObject, ... additionalArgs):Function {
return createWithArgs(method, additionalArgs, true, $listenerCurrentTarget);
}
private static function createWithArgs(func:Function, args:*, needRemove:Boolean = false, $listenerCurrentTarget:InteractiveObject = null):Function {
var f:Function = function():* {
var func0:Function = arguments.callee.func;
var parameters:Array = arguments.concat(args);
return func0.apply(null, parameters);
};
f["func"] = func;
if (needRemove) {
var funDic:Dictionary = null;
if ($listenerCurrentTarget in funDictionary) {
funDic = funDictionary[$listenerCurrentTarget] as Dictionary;
} else {
funDic = new Dictionary();
funDictionary[$listenerCurrentTarget] = funDic;
}
funDic[func] = f;
}
return f;
}
public static function getListener(fun:Function, $listenerCurrentTarget:InteractiveObject):Function {
var listener:Function = null;
if ($listenerCurrentTarget in funDictionary) {
var funDic:Dictionary = funDictionary[$listenerCurrentTarget] as Dictionary;
if (fun in funDic) {
listener = funDic[fun] as Function;
} else {
//throw new Error(" , createListener() , delFun() ")
listener = null;
}
} else {
//throw new Error(" createListener() , delFun() ")
listener = null;
}
return listener;
}
public static function delListener($fun:Function, $listenerCurrentTarget:InteractiveObject):void {
if ($listenerCurrentTarget in funDictionary) {
var funDic:Dictionary = null;
funDic = funDictionary[$listenerCurrentTarget] as Dictionary;
delete funDic[$fun];
if (DictionaryUtil.isLengthZero(funDic) == true) {
delete funDictionary[$listenerCurrentTarget]
}
}
}
}
}
사용법
var action:XlandsHttpAction = new XlandsHttpAction();
action.addEventListener(HttpEvent.ON_HTTP_SUCCESS, Delegate.create(onRegisterSuccess, b));
action.actByMain();
private function onRegisterSuccess(b:Boolean):void{
this.registered = b;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
F#에서 Android 앱 개발 Helloworld 편F#에서 android 앱 개발의 기본이되는 Helloworld를 출력하는 방법을 소개합니다. 먼저 Visual Studio 2019를 시작합니다. [새 프로젝트 만들기(N)]→[빈 앱(Android)]을 선택합니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.