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.
좋아, 그럼 어쩌면 나는 "활성화"가 무엇인지 물어봐야 할 것입니다. 왜냐하면 NewActivation에 대한 설명에서 "활성화의 로컬 레지스터 이후 ..."라고합니다. 그렇다면 ABC 용어의 활성화는 무엇입니까? – Ska
@ska 제가 말할 수있는 한 기본적으로 로컬 변수를 속성으로 포함하는 객체입니다. –
개체? AVM이 객체가 아닌 스택과 레지스터로 더 많은 작업을하고 있지 않습니까? 나는 그것이 전체적인 생각이라고 생각했다. Unix NASM에서와 같이 Unix가 Machine Instruction Program을 제어하기 전에 레지스터가 (일부) 스택에 푸시되어야하는 것과 같을 수 있습니다. 그러나 Unix에서는 이것이 훌륭하게 설명되고 논리적입니다. 어쨌든 포스트에 감사 드리며, 더 가서 찾아 보겠습니다. – Ska