2014-07-17 1 views
0
private function onEnemigo(e:TimerEvent):void{ 

     var tiempoTranscurrido:int = getTimer() - ultimoEnemigo; 

     if(tiempoTranscurrido > proximoEnemigo){ 

      ultimoEnemigo = getTimer(); 
      var enemigo: int = Math.floor(Math.random() * numeroDeEnemigos); 

      this["enemigo"+enemigo+"_act"].play(); 
      proximoEnemigo = Math.floor(Math.random() * 2000); 

      } 

     } 

내가 고려 enemigo0_act 및 enemigo4_act 사이의 임의 장면을 재생하려는 numeroDeEnemigos = 4어도비 ActionScript 3.0 및 "이"

이유는 무엇입니까 "이 ["enemigo "+ enemigo +"_ 행위 "]" 작업? 그것은 어떻게 작동해야합니까? 그러나 나는 왜이 예에서 "this"의 기능이 정확히 무엇인지 이해하지 못합니다.

답변

0

this은 클래스의 인스턴스를 의미하는 as3의 예약 키워드입니다. 이 문맥에서 this은 사용자의 MovieClip 개체 (또는 MainTimeLine)를 말하며, 이는 씬을 속성으로 사용합니다. 대괄호와 속성 이름을 통해 MovieClip의 속성에 액세스 할 수 있습니다. 사실 Object으로이 작업을 수행 할 수 있습니다.

0

예를 들어 'this'가 필요한 이유는 플래시에서 ARRAY NOTATION을 사용하여 객체를 참조하도록하는 것입니다.

코드가 임의의 "enemigo"무비 클립 ( "enemigoX_act")을 찾고 있다고 가정합니다. 여기서 X는 임의의 정수입니다.

'this'키워드가 없으면 Flash는 [ "enemigo"+ enemigo + "_ act"]를 문자열로 구문 분석하려고 시도하고 문자열에 play() 함수가 없으므로 오류를 반환합니다.

대괄호 안에 이름이있는 객체 앞에 'this'를 넣으면 Flash에서 문자열을 찾고 있지 않지만 배열 표기법을 사용하여 객체를 참조하려고합니다. 요약

,

this["enemigo"+ 5 +"_act"] 

가 직접적

enemigo5_act 

this.enemigo5_act 

그래서 당신이 볼 수

를 참조 동일 배열 표기법은 그래서 당신의 경우에 유용하다 직접 객체 표기법없이 임의의 enemigo를 호출 할 수 있습니다.