 |
|
 |
|
 |
 |
|
|
|
|
|
|
class com.vkimone.utils.ExtDelegate {
function ExtDelegate(f : Function) {
//생성자 필요없음.....
}
/**------------------------------------------------------------------------
* 함수를 다른 오브젝트 영역으로 설정할수 있음..apply 또는 call 과 같은 기능
* 오브젝트와 함수 이외에 나머지는 파라미터로 넘겨줌
* @param obj 오브젝트 영역
* @param func 실행할 함수
*------------------------------------------------------------------------*/
public static function create(obj:Object, func:Function):Function{
var f = function(){
var target = arguments.callee.target;
var func = arguments.callee.func;
var args=arguments.callee.args;
return func.apply(target, args);
};
f.target = arguments.shift();
f.func = arguments.shift();
f.args=arguments;
return f;
}
}
클래스 안에 메소드가 중첩될경우 현재 클래스 scope를 참조하려고 일일이 this 키워드를 사용해 코드 가독성이 좀 떨어졌는데 알고보니 7.0 버전부터 delegate 클래스를 지원하고 있었다...-.-
원본코드는 스코프변경후 실행할 메소드의 파라미터를 넘겨줄수 없었는데 파라미터까지 지원하게 좀 손봤다..함수를 참조값으로 넘길수 있다는 점이 좀 흥미롭다..
btn.onRelease=ExtDelegate .create(this,test,param1,param2.......); --> parameter 도 맘대루..
|
|
| 이 글의 관련글(트랙백) 주소 :: http://kimkijeung.com/trackback/8 |
|
|
|
|
|
 |
|
|