2016-05-19 12 views
0

私は2つのムービークリップを持っています:mcMainは右に向いているキャラクターで、私は左に向いているキャラクターであるmcMainLeftを持っています。左の矢印を押すと、mcMainLeftが表示され、左に移動するようにコードを実装しようとしました。 mcMainの場合と同じです。何が起こったのかは、私が左に動くと左に動いてキャラクターが左を向いているが、右の矢印をクリックして右に動かすと、現在のキャラクターを現在の位置に移動させない、別の位置から開始します。私はその取引が何であるか分からない。あなたは基本的に2つの文字オブジェクト(mcMainとmcMainLeft)が、常にだけそのうちの一つを移動する必要があるためだAS3移動するスプライトの向きを作る方法

//These variables will note which keys are down 
var leftKeyDown:Boolean = false; 
var upKeyDown:Boolean = false; 
var rightKeyDown:Boolean = false; 
var downKeyDown:Boolean = false; 
//the main character's speed 
var mainSpeed:Number = 7; 
//whether or not the main guy is jumping 
var mainJumping:Boolean = false; 
//how quickly should the jump start off 
var jumpSpeedLimit:int = 15; 
//the current speed of the jump; 
var jumpSpeed:Number = 0; 

//set coordinates of pacman left and right 
mcMain.x = 270; 
mcMain.y = 370; 
mcMainLeft.x = 270; 
mcMainLeft.y = 370; 

//make pacman left invisible on startup 
mcMainLeft.visible = false; 

//move character function 
mcMain.addEventListener(Event.ENTER_FRAME, moveChar); 
mcMainLeft.addEventListener(Event.ENTER_FRAME, moveChar); 
function moveChar(event:Event):void{ 
    //if certain keys are down, then move the character 
    if(leftKeyDown){ 
     mcMainLeft.x -= mainSpeed; 
    } 
    if(rightKeyDown){ 
     mcMain.x += mainSpeed; 
    } 
    if(upKeyDown || mainJumping){ 
     mainJump(); 
    } 
} 

//listening for the keystrokes 
//this listener will listen for down keystrokes 
stage.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown); 
function checkKeysDown(event:KeyboardEvent):void{ 
    //making the booleans true based on the keycode 
    //WASD Keys or arrow keys 
    if(event.keyCode == 37 || event.keyCode == 65){ 
     leftKeyDown = true; 
     mcMain.visible = false; 
     mcMainLeft.visible = true; 
    } 
    if(event.keyCode == 38 || event.keyCode == 87){ 
     upKeyDown = true; 
    } 
    if(event.keyCode == 39 || event.keyCode == 68){ 
     rightKeyDown = true; 
     mcMain.visible = true; 
     mcMainLeft.visible = false; 
    } 
    if(event.keyCode == 40 || event.keyCode == 83){ 
     downKeyDown = true; 
    } 
} 
//this listener will listen for keys being released 
stage.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp); 
function checkKeysUp(event:KeyboardEvent):void{ 
    //making the booleans false based on the keycode 
    if(event.keyCode == 37 || event.keyCode == 65){ 
     leftKeyDown = false; 
    } 
    if(event.keyCode == 38 || event.keyCode == 87){ 
     upKeyDown = false; 
    } 
    if(event.keyCode == 39 || event.keyCode == 68){ 
     rightKeyDown = false; 
    } 
    if(event.keyCode == 40 || event.keyCode == 83){ 
     downKeyDown = false; 
    } 
} 

//jumping function 
function mainJump():void{ 
    //if main isn't already jumping 
    if(!mainJumping){ 
     //then start jumping 
     mainJumping = true; 
     jumpSpeed = jumpSpeedLimit*-1; 
     mcMain.y += jumpSpeed; 
     mcMainLeft.y += jumpSpeed; 
    } else { 
     //then continue jumping if already in the air 
     if(jumpSpeed < 0){ 
      jumpSpeed *= 1 - jumpSpeedLimit/75; 
      if(jumpSpeed > -jumpSpeedLimit/5){ 
       jumpSpeed *= -1; 
      } 
     } 
     if(jumpSpeed > 0 && jumpSpeed <= jumpSpeedLimit){ 
      jumpSpeed *= 1 + jumpSpeedLimit/50; 
     } 
     mcMain.y += jumpSpeed; 
     mcMainLeft.y += jumpSpeed; 
     //if main hits the floor, then stop jumping 
     //of course, we'll change this once we create the level 
     if(mcMain.y || mcMainLeft.y >= stage.stageHeight - mcMain.height || mcMainLeft.height){ 
      mainJumping = false; 
      mcMain.y = stage.stageHeight - mcMain.height; 
      mcMainLeft.y = stage.stageHeight - mcMainLeft.height; 
     } 
    } 
} 

答えて

2

は、ここに私のコードです。もう1つは目に見えず、開始位置にとどまります。

それぞれがmcMainとmcMainLeftを保持する2つのフレームでMovieClipを作成します。ムービークリップが単独でループしないように、最初のフレームにstop()を配置します。次に、あなたのキャラクターとその組み合わせムービークリップを使用します。

function moveChar(event:Event):void{ 
    //if certain keys are down, then move the character 
    if(leftKeyDown){ 
     myNewCharacter.x -= mainSpeed; 
    } 
    if(rightKeyDown){ 
     myNewCharacter.x += mainSpeed; 
    } 
    if(upKeyDown || mainJumping){ 
     mainJump(); 
    } 
} 

、代わりの左または右に直面し、あなたの文字を表示するには、新しいムービークリップの正しいフレームに視界ジャンプを切り替える:

myNewCharacter.gotoAndStop(2); // or 1 
+0

ありがとうございました!出来た! –

0
mcMain.scaleX = -1; // will face left 

および

mcMain.scaleX = 1; // will face right 

次に、.scaleXという値を使用することができます。論理ブロック内の変数。

関連する問題