flash/As2.0 | 2006/05/02 09:55
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
기정 2006/05/17 09:44 ReplyDelete
필요개선사항

모든 파라미터가 이벤트가 메소드가 실행될때 실시간으로 전달되지 않는다.
초기에 설정된 파라미터에 한해서 유용하지 파라미터가 이벤트 마다 바뀌는 경우는 적용되지 않는다. 참조값이나 고정변수에 적용가능.....
뭔가 새로운 방법이 없을까....

Name 
Password 
Homepage 
  secret
Comment 
  글쓰기


[PREV] [1] ... [96][97][98][99][100][101][102][103][104] ... [105] [NEXT]

 
전체 (105)
flash (74)
math&physics (4)
programming (11)
Flex2 (1)
Mac (2)
photo (0)
project (6)
주저리주저리 (3)
유용한 자료들 (1)
diary (0)
Book (1)
web (2)
«   2009/01   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31