Monthly Archive for May, 2006
Page 3 of 3
클래스 안에 메소드가 중첩될경우 현재 클래스 scope를 참조하려고 일일이 this 키워드를 사용해 코드 가독성이 좀 떨어졌는데 알고보니 7.0 버전부터 delegate 클래스를 지원하고 있었다…
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; } }
원본코드는 스코프변경후 실행할 메소드의 파라미터를 넘겨줄수 없었는데 파라미터까지 지원하게 좀 손봤다..함수를 참조값으로 넘길수 있다는 점이 좀 흥미롭다..
btn.onRelease=ExtDelegate .create(this,test,param1,param2…….);
객체를 삭제하거나 무비클립을 unload 해도 setInterval Id 값은 전역속성으로서 그대로 메모리에 남아 지우지 않는한 계속실행된다. 전에 이걸 모르고 코드를 작성했다가 엄청난 멍멍이고생을 했던기억이 새록새록 난다.
과연 어떻게 클래스에 상관없이 모든 객체내에 쓰인 setInterval 을 몽땅 없애버릴수 있을까?…
나이스한(?) 방법을 하나 발견했다..
function clearAllIntervals() { var topID = setInterval(function () {}, 100); for (i=0; i<=topID; i++) { clearInterval(i); } }
Id 값이 순차적으로 증가한다는 사실에 착안…새로운 인터벌 생성후 그 이전 아이디 값을 몽땅지운면 끝….
Recent Comments