2011-03-23 2 views
3

일부 메서드는 someActivation 플래그로 명시된 일부 메서드를 사용하지 않습니다. 어떤 작업을 수행하고 언제 사용해야하며 언제 사용해야합니까?ActionScript 바이트 코드에서 NewActivation은 무엇을 의미합니까?

새로운 활성 객체 newactivation를 만들고 스택 상으로 푸시 :

AVM 워드 프로세서에 정보

다소 인색하다. MethodInfo 항목에 NEED_ACTIVATION 플래그가 설정된 메서드에서만 사용할 수 있습니다.

답변

4

AVM 2 개요 섹션 6.3에서 잘 설명있어 다음 newfunction 명령이 실행될 때 포착되지 활성화의 로컬 레지스터 이후

, 비 리프에 대한 환경 기능 은 올바르게 캡처 할 수있는 정품 인증 개체 에 저장해야합니다. newactivation 명령은 그러한 을 활성화합니다.

가 로컬 기능 안에 정의 경우 예를 들어, 방법에서 사용되는 : 결과

public function QuickTest() 
{ 
    startTimer(1); 
    startTimer(2); 
} 

public function startTimer(id:int):void 
{ 
    var timer:Timer = new Timer(1000, 1); 
    timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(ev:TimerEvent):void 
    { 
     trace('Timer #'+id+' done.'); 
    }); 
    timer.start();   
}  

:

Timer #1 done. 
Timer #2 done. 

가 볼 수있는 로컬 변수 인수가 메소드가 호출 될 때 "잠겨"있습니다. startTimer 메소드는 실행될 때마다 활성화를 생성하기 때문에 그 변수는 잠겨 있습니다. 지역 변수가 잠겨 있지 않은 경우이 코드의 결과는 다음과 같습니다.

Timer #2 done. 
Timer #2 done. 
+0

좋아, 그럼 어쩌면 나는 "활성화"가 무엇인지 물어봐야 할 것입니다. 왜냐하면 NewActivation에 대한 설명에서 "활성화의 로컬 레지스터 이후 ..."라고합니다. 그렇다면 ABC 용어의 활성화는 무엇입니까? – Ska

+0

@ska 제가 말할 수있는 한 기본적으로 로컬 변수를 속성으로 포함하는 객체입니다. –

+0

개체? AVM이 객체가 아닌 스택과 레지스터로 더 많은 작업을하고 있지 않습니까? 나는 그것이 전체적인 생각이라고 생각했다. Unix NASM에서와 같이 Unix가 Machine Instruction Program을 제어하기 전에 레지스터가 (일부) 스택에 푸시되어야하는 것과 같을 수 있습니다. 그러나 Unix에서는 이것이 훌륭하게 설명되고 논리적입니다. 어쨌든 포스트에 감사 드리며, 더 가서 찾아 보겠습니다. – Ska

관련 문제