2014-01-25 1 views
0

나는 메인 클래스에서 변수를 선언했다. public var attack:Number = 0; 이것은 (항상 변경되는) 동적 값이며 타임 라인의 마지막 애니메이션 프레임에서 0으로 설정해야한다.AS3. 타임 라인 프레임에서 공용 변수를 사용하는 방법은 무엇입니까?

1120: Access of undefined property attack.이 답변 주셔서 감사합니다 :

가 나는 오류가 발생했습니다 마지막 프레임에서 attack=0를 사용하려고하면.

답변

0

하는 메인 클래스에서 addFrameScript를 사용해보십시오 : 당신이 가진 클래스를 연결하지 않은 경우 당신이 당신의 라이브러리에서 MovieClip를 컴파일 할 때마다

asset.addFrameScript(asset.totalFrames-1, function():void { attack = 0; }); 

, 어떻게 addFrameScript() 작품에 약간의 부연, 컴파일러는 하나를 생성 당신 뒤에서 당신을 위해. addFrameScript()은 MovieClips 타임 라인과 연관된 스크립트 간의 문서화되지 않은 연결입니다. MovieClip에서 addFrameScript()을 실행하면 매개 변수 (frameNumber - 1, functionToCall)으로 설정됩니다. MovieClip 타임 라인은 프레임 1에서 시작하지만 실제로는 참조 할 때 프레임 0으로 읽습니다 (저장소 컨테이너가 인덱스 0에서 시작하는 방식과 비슷 함).

필자는 익명의 함수를 전달했다. addFrameScript()에 function 매개 변수에 대한 함수를 만들었습니다.이 함수는 지정된 프레임에 도달하면 변수 공격을 0으로 설정합니다. 물론 그렇게 할 필요는 없습니다.

function setAttackToZero():void { 
    attack = 0; 
} 

당신은 그냥 쉽게 addFrameScript 매개 변수로 그것을 전달할 수 있습니다 : 당신이 기능을 가지고 말

asset.addFrameScript(asset.totalFrames-1, setAttackToZero); 
+0

고맙습니다. 어떻게 작동하는지 설명해 주시겠습니까? 오류가 발생합니다. '1120 : 자산 자산 및 프레임 번호가 정의되지 않은 상태로 액세스합니다.' –

+0

예 애니메이션 타임 라인이있는 표시 객체의 이름 인 경우 asset을 대체해야합니다. 프레임 번호를 자산의 마지막 프레임 번호로 바꾸십시오 (1을 뺀 값). 나는 정보가 주어 졌다고 생각 했으므로 좀 더 구체적으로 대답의 frameNumber 부분을 업데이트 할 것이다. –

+0

어떻게 작동하는지 설명해 주시겠습니까? 자산의 currentFrame! = totalFrames이 경우 공격 = 0 또는 어떻게 작동합니까? –

1

또한 이벤트 사용할 수 있습니다

마지막 프레임 :

dispatchEvent(new Event("lastFrameCustomHandler", true, true)); 

:

addEventListener("lastFrameCustomHandler", handleLastFrame); 
function handleLastFrame (event:Event):void 
{ 
    attack = 0; 
} 
관련 문제