2011-10-05 3 views
2

미로 게임에 대한 작업. 왼쪽 키를 누르면 동영상 클립 (문자)이 왼쪽으로 90도 회전해야합니다.As3 동영상 방향을 바꾸려면 동영상 클립을 뒤집는 방법은 무엇입니까?

내가 틀렸다면 정정 해주세요.하지만이 코드를 사용할 수 있다고 생각합니다.

char.scaleX *= -1; 

그러나 가장 중요한 것은 캐릭터가 미로의 벽을 통과하지 않는다는 것입니다. 그리고 위의 코드를 구현할 때 문제가 있다고 생각합니다. 내가 여기 넣을 때 제대로 작동하지 않기 때문에;

if(!mazehit) { 

        char.y += speed; 
        char.scaleX *= -1; 


       } 

내 질문에 영화 클립을 뒤집기 위해 코드를 넣어야합니까?

var leftArrow, rightArrow, upArrow, downArrow:Boolean; 
var speed:Number = 4; 
var charRadius:Number = 10; 

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); 
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased); 
stage.addEventListener(Event.ENTER_FRAME, everyFrame); 

function keyPressed(event:KeyboardEvent):void { 
    if (event.keyCode == Keyboard.LEFT) { 
     leftArrow = true; 
    } 
    if (event.keyCode == Keyboard.RIGHT) { 
     rightArrow = true; 
    } 
    if (event.keyCode == Keyboard.UP) { 
     upArrow = true; 
    } 
    if (event.keyCode == Keyboard.DOWN) { 
     downArrow = true; 
    } 
} 

function keyReleased(event:KeyboardEvent):void { 
    if (event.keyCode == Keyboard.LEFT) { 
     leftArrow = false; 
    } 
    if (event.keyCode == Keyboard.RIGHT) { 
     rightArrow = false; 
    } 
    if (event.keyCode == Keyboard.UP) { 
     upArrow = false; 
    } 
    if (event.keyCode == Keyboard.DOWN) { 
     downArrow = false; 
    } 
} 

function everyFrame(event:Event):void { 
    var mazehit:Boolean = false; 
    if (leftArrow) { 
     for(var i:int = 0; i < speed; i++) { 
      if(bounds.hitTestPoint(char.x - charRadius - i, char.y, true)) { 


       mazehit = true; 
       break; 
      } 
     } 
     if(!mazehit) { 

      char.x -= speed; 




     } 

    } else if (rightArrow) { 
     for(var j:int = 0; j < speed; j++) { 
      if(bounds.hitTestPoint(char.x + charRadius + j, char.y, true)) { 

       mazehit = true; 
       break; 
      } 
     } 
     if(!mazehit) { 

      char.x += speed; 
     } 
    } else if (upArrow) { 
     for(var k:int = 0; k < speed; k++) { 
      if(bounds.hitTestPoint(char.x, char.y - charRadius - k, true)) { 

       mazehit = true; 
       break; 
      } 
     } 
     if(!mazehit) { 
      char.y -= speed; 
     } 

    } else if (downArrow) { 

     for(var m:int = 0; m < speed; m++) { 
      if(bounds.hitTestPoint(char.x, char.y + charRadius + m, true)) { 

       mazehit = true; 
       break; 
      } 
     } 
     if(!mazehit) { 

      char.y += speed; 


     } 
    } 
} 

는 시간 내 주셔서 감사합니다

나는 방향이 속도에 따라 업데이트 할

답변

3

:

if(keyLeft && !keyRight) 
{ 
    char.scaleX = -1; 
} 
else if(keyRight && !keyLeft) 
{ 
    char.scaleX = 1; 
} 
else 
{ 
    // keep current direction 
} 
+0

감사 : 누르면 한 키에 의해,

char.scaleX = (speed > 0) ? 1 : -1; 

또는 당신은 답을 위해서 몇 가지를 시도했지만, 전체 코드가 if 문으로 가득차 있다는 것을 알기 때문에, part go go – Opoe

+0

모든 것이 계산되면 EnterFrame 함수의 끝에 넣으십시오. – Mattias

+0

감사합니다. Mattias – Opoe

관련 문제