2016-05-11 5 views
0

私は迷路とアクションのスクリプト3.0を作った、プレイヤーが終了ボックス(exitというムービークリップ)迷路は私の勝利のスクリーンに行きません。 誰かが、これは学校私はAS3で迷路を作って、プレイヤーが出口に当たったときに迷路は私の勝者の画面に行きません

ための最終的なプロジェクトであるため、それは素晴らしいことだ私を助けることができれば、ここに私のコード

var rightArrow:Boolean = false; 
    var leftArrow:Boolean = false; 
    var upArrow:Boolean = false; 
    var downArrow:Boolean = false; 
    var speed:int = 5; 

    stage.addEventListener(KeyboardEvent.KEY_DOWN, stage_onKeyDown); 
    stage.addEventListener(KeyboardEvent.KEY_UP, stage_onKeyUp); 
    stage.addEventListener(Event.ENTER_FRAME, stage_onEnterFrame); 

    function stage_onKeyDown(event:KeyboardEvent):void { 
     if(event.keyCode == Keyboard.RIGHT) rightArrow = true; 
     if(event.keyCode == Keyboard.LEFT) leftArrow = true; 
     if(event.keyCode == Keyboard.UP) upArrow = true; 
     if(event.keyCode == Keyboard.DOWN) downArrow = true; 
    } 
    function stage_onKeyUp(event:KeyboardEvent):void { 
     if(event.keyCode == Keyboard.RIGHT) rightArrow = false; 
     if(event.keyCode == Keyboard.LEFT) leftArrow = false; 
     if(event.keyCode == Keyboard.UP) upArrow = false; 
     if(event.keyCode == Keyboard.DOWN) downArrow = false; 
    } 
    function stage_onEnterFrame(event:Event):void { 
     var rect:Rectangle = player.getBounds(this); 
     var i:int = 0; 
     var xBump:int = 0; 
     var yBump:int = 0; 
     if(rightArrow) { 
      xBump = speed; 
      for(i = 0; i < speed; i++) { 
       if(maze.hitTestPoint(rect.right + i, player.y, true)) { 
        xBump = i - 1; 
        break; 
       } 
      } 
     } 
     if(leftArrow) { 
      xBump = -speed; 
      for(i = 0; i < speed; i++) { 
       if(maze.hitTestPoint(rect.left - i, player.y, true)) { 
        xBump = -i + 1; 
        break; 
       } 
      } 
     } 
     if(upArrow) { 
      yBump = -speed; 
      for(i = 0; i < speed; i++) { 
       if(maze.hitTestPoint(player.x, rect.top - i, true)) { 
        yBump = -i + 1; 
        break; 
       } 
      } 
     } 
     if(downArrow) { 
      yBump = speed; 
      for(i = 0; i < speed; i++) { 
       if(maze.hitTestPoint(player.x, rect.bottom + i, true)) { 
        yBump = i - 1; 
        break; 
       } 
      } 
     } 
     player.x += xBump; 
     player.y += yBump; 
    } 

if(player.hitTestObject(exit)) { 
       gotoAndStop("win"); 
      } 
stop(); 

答えて

-1

あなたのテストです:

if(player.hitTestObject(exit)) { 
      gotoAndStop("win"); 
} 

は、関数の外であるように思われるstage_onEnterFrameしたがって1回のみ実行されます。関数の閉じ括弧を確認してください:

player.x += xBump; 
    player.y += yBump; 
}   // this one 

はそうのように、テストの後に来る:

} 
    player.x += xBump; 
    player.y += yBump; 


    if(player.hitTestObject(exit)) { 
      gotoAndStop("win"); 
    } 
} // closing function here, NOT above 
+0

@downvoter:役に立ちませんでしたか? – null

+0

ありがとうございました。 –

+0

@ルーク:うれしく助けてくれました。 [so]では、上向き矢印(上向き矢印)またはそれを受け入れる(緑色のダニ)と回答が役立ったことを示すことができます – null

関連する問題