2014-10-23 5 views
1

저는 몇 시간 동안 노력해 왔으며 키보드로 움직일 수있는 작은 캐릭터를 얻을 수 없습니다.무비 클립 문자를 이동하려면 어떻게해야합니까?

나는 어떤 일이 일어나고 위치 값이 변경되지만 내 캐릭터가 그 위치 변경에 반응하지 않는지 확인하기 위해 추적을 실행했습니다.

오류 메시지가 표시되지 않습니다. Character와 BrickBlock은 모두 영화 클립이며 ActionScript 용으로 가져 왔습니다.

다른 정보가 필요하면 알려 주시기 바랍니다. 고맙습니다! :)

내 다음 코드를

package { 

import flash.events.Event 
import flash.display.MovieClip; 
import flash.events.KeyboardEvent; 
import flash.ui.Keyboard; 

public class CharMove extends MovieClip { 

    var char1 :Character; 
    var block :BrickBlock; 

    public function CharMove() 
    {   
     char1 = new Character(); 
     block = new BrickBlock(); 

     //this.addEventListener(Event.ENTER_FRAME, collide) 
     stage.addEventListener(KeyboardEvent.KEY_DOWN, kDown); 
    } 

    /*function collide(e:Event):void 
    { 
      if(char.hitTestObject(block)) 
      { 
       char.visible = !char.visible; 
      } 
    }*/ 

    function kDown(event:KeyboardEvent):void 
    { 
     switch (event.keyCode) 
     { 
      case Keyboard.LEFT: 
       char1.x -= 5; 
       trace(char1.x); 
       break; 

      case Keyboard.RIGHT: 
       char1.x +=5; 
       trace(char1.x); 
       break; 
     } 
    } 

} 

}

+0

올바르지 않은 부분을 수정하십시오. 여기에있는 세부 정보에 따라 화면에 등장 인물을 볼 수는 있지만 움직이지는 않습니다. 이것이 실제로 정확하다면, 코드를보고,이 클래스 내에서 캐릭터를 만들고 여기에'x' 속성을 설정하는 것을 볼 수 있습니다. 따라서 화면에 표시되는 문자는이 코드에서 다루는 문자가 아닙니다. 여기에서 사용하려면 실제 캐릭터에 대한 참조를 얻어야합니다. 또는 더 나은 옵션은 여기에서 시작하는 동작 코드를 캐릭터 클래스에 추가하는 것입니다. –

+0

네, 맞습니다. 너 뭔가있을거야! 나는 실제로 그것이 사실일지도 모른다고 생각하고 있었다. :) 나는 지금 그것을 시험해보고 그것이 효과가 있는지 볼 것입니다. – FireFoxxie

+0

문제가 해결되었습니다. Parcell에게 제 관심을 가져 주셔서 감사합니다. 방금 스테이지의 캐릭터를 삭제하고 내가 만든 캐릭터에 추가했습니다. 무대의 캐릭터를 참조하려면 어떻게해야합니까? – FireFoxxie

답변

0

당신은 정적 입력 클래스를 작성하는 것을 고려할 수 있습니다.

package input { 
    import flash.display.Stage; 
    import flash.events.KeyboardEvent; 

    public class Input { 

     private static var keys:Array = new Array(255); 

     public static function setup(stage:Stage):void { 
      stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown); 
      stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); 
     } 

     private static function keyDown(e:KeyboardEvent):void { 
      keys[e.keyCode] = true; 
     } 

     private static function keyUp(e:KeyboardEvent):void { 
      keys[e.keyCode] = false; 
     } 

     public static function isKeyDown(k:int):Boolean { 
      return keys[k]; 
     } 

     public static const A:uint = 65; 
     public static const B:uint = 66; 
     public static const C:uint = 67; 
     // The rest of the keys... 
    } 
} 

KEY_DOWNKEY_UP 이벤트에 대한 리스너를 추가 그것은 첫 번째 전화 설정()을 사용합니다. 키를 쉽게 쿼리하고 관련 작업을 수행 할 수 있습니다.

Input.setup(stage); 

/... 

if(Input.isKeyDown(Input.A)) { 
    char1.x -= 5; 
} 
+0

시간 내 주셔서 감사합니다. 그것이 매우 조립되었지만, 제 질문에 대한 첫 번째 코멘트는 나를 도왔습니다. 하지만 나는 액션 스크립트에 대한 더 깊은 이해를 위해 코드를 살펴볼 것입니다. – FireFoxxie