0

as3에서 별도의 클래스에서 키보드 입력을 얻는 방법에 대해 궁금합니다. 화살표 키를 사용하여 이동할 클래스가 있지만 hero 클래스에 있어야합니다. main 함수에서 이동 함수를 호출하는 방법은 무엇입니까?키보드 입력에서 별도의 클래스를 사용하여

답변

0

보통 무대에서 키보드 이벤트를 듣기 때문에이 문제를 처리하는 가장 좋은 방법은 필요한 특수 키보드 논리를 Hero 클래스 자체에 추가하는 것입니다.

키보드 이벤트 수신기를 추가 및 제거 할 때 트리거하려면 Hero에서 ADDED_TO_STAGE 및 REMOVED_FROM_STAGE 이벤트를 수신 대기 할 수 있습니다.

기본적인 예는 다음과 같이 작동 할 수 있습니다 :

public class Hero extends Sprite 
{ 

    // Constructor 
    public function Hero() 
    { 
     addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
    } 


    // Event handlers 

    protected function onAddedToStage(event:Event):void 
    { 
     this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
     this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); 
     this.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); 
     this.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); 
    } 

    protected function onRemovedToStage(event:Event):void 
    { 
     this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
     this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); 
     this.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); 
     this.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp); 
    } 

    protected function onKeyDown(event:KeyboardEvent):void 
    { 
     switch (event.keyCode) 
     { 
      case Keyboard.LEFT: 
       // Start movement 
       break; 
      case Keyboard.RIGHT: 
       // Start movement 
       break; 
     } 
    } 

    protected function onKeyUp(event:KeyboardEvent):void 
    { 
     switch (event.keyCode) 
     { 
      case Keyboard.LEFT: 
       // Stop movement 
       break; 
      case Keyboard.RIGHT: 
       // Stop movement 
       break; 
     } 
    } 
} 
+0

을 나는 heroMovement 기능을 이미 만든이 : 를이 내가 이전에 그 모든 것을 설명했다 게시물입니다 'http://stackoverflow.com/questions/ 23233098/signals-keyboard-movement-as3? noredirect = 1 # comment35555366_23233098' – kevorski

관련 문제