2012-06-25 2 views
0

나는 왼쪽 키를 누른 채 오른쪽으로 움직이면 캐릭터가 왼쪽으로 이동하지만 더 느린 속도 (즉, movementSpeed ​​/ 2)로 움직이게하는 무브먼트 정비사에게 내 캐릭터를 넣으려고합니다. 도보 (비자 반대) :함수에 대해 키의 순차적 인 조합이 유지됩니까?

public var leftKey:Boolean = false; 
    public var rightKey:Boolean = false; 
    public var upKey:Boolean = false; 
    public var leftFlag:Boolean = false; 
    function ifKeyDown(event:KeyboardEvent):void 
    { 
     if (event.keyCode == Keyboard.LEFT && rightKey == false) 
     { 
      leftKey = true; 
      if (event.keyCode == Keyboard.LEFT && event.keyCode == Keyboard.RIGHT) 
      { 
       leftFlag = true; 
       trace("leftFlag true"); 
      } 
     } 
     if (event.keyCode == Keyboard.RIGHT && leftKey == false) 
     { 
      rightKey = true; 
     } 
    } 

    function ifKeyUp(event:KeyboardEvent):void 
    { 
     if (event.keyCode == Keyboard.LEFT) 
     { 
      leftKey = false; 
      leftFlag = false; 
     } 
     if (event.keyCode == Keyboard.RIGHT) 
     { 
      rightKey = false; 
     } 
    } 

    public function ifEnterFrame(event:Event):void 
    { 
     if (leftKey == true && leftFlag == false) 
     { 
      player1_mc.x -= mainSpeed; 
      trace("L"); 
     } 

     if (rightKey == true && leftFlag == false) 
     { 
      player1_mc.x += mainSpeed; 
      trace("R"); 
     } 
     if (leftKey == true && rightKey == true) 
     { 
      if (leftFlag == true) 
      { 
       player1_mc.x -= mainSpeed/2; 
       trace("L + R"); 
      } 
      else 
      { 
       player1_mc.x += mainSpeed/2; 
       trace("R + L"); 
      } 
     } 

내 출력은 다음과 같을 것이다 : 나는 L L L L 내가 왼쪽 키 놓아 키 왼쪽 개최. 그런 다음, 내가 잡아 바로 키 R R R R 내가 오른쪽 키의 가자 . 그런 다음, 나는 L R R + L L R R + I 모두 놓아 L 왼쪽 마우스 오른쪽 후 개최 누르고 있습니다. 그런 다음, 내가 L R R + L L R R + L

나는 leftFlag가 실행되고 있지 않은지 내 흔적으로 알고 있지만 잘 또한 다음 왼쪽 개최, 내가 노력하고 시간을 보냈어요 왜 쓸모 없는지 알아 내려고. :(

답변

0

나는 당신의 문제가이 표현 생각한다. 나는 그것을 자바와 같은 아무것도 경우, 액션 스크립트에 익숙하지 않은 오전, 키보드 이벤트가 각 키 누름에 대해 한 번이라고하지만

event.keyCode == Keyboard.LEFT && event.keyCode == Keyboard.RIGHT 

"이벤트" 하나의 키가 아닌 두 개의 서로 다른 키에 해당하고, 따라서 귀하의 표현은 항상 false를 반환합니다.

문제에 대한 해결책을 아마 키를 누르면 및 해제 기능 모두에서 같은 것을 포함 할 것이다.

if (event.keyCode == Keyboard.LEFT) 
{ 
    if (leftFlag) 
    { 
     //code here 
    } 
    if (rightFlag) 
    { 
     //code here 
    } 
} 
if (event.keyCode == Keyboard.RIGHT) 
{ 
    if (leftFlag) 
    { 
     //code here 
    } 
    if (rightFlag) 
    { 
     //code here 
    } 
} 

희망이 도움이됩니다.

관련 문제