2016-05-11 17 views
0

Ich machte A Maze und Action-Skript 3.0 und alles funktioniert, außer wenn der Spieler die Ausfahrt berührt (ein Film namens Exit) Das Labyrinth wird nicht zu meinem Gewinnbildschirm gehen. Wenn mir jemand helfen könnte, dass groß sein würde, weil dies für die Schule ein Abschlussprojekt istIch machte ein Labyrinth in AS3 und das Labyrinth wird nicht zu meinem Win-Screen gehen, wenn der Spieler den Ausgang trifft

hier ist mein Code

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(); 

Antwort

-1

Ihr Test:

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

außerhalb der Funktion zu sein scheint stage_onEnterFrame und wird daher nur einmal ausgeführt. Stellen Sie sicher, die schließende Klammer der Funktion:

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

Kommt nach dem Test, etwa so:

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


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

@downvoter: Nicht hilfreich? – null

+0

Vielen Dank, es hat funktioniert –

+0

@Luke: Ich könnte froh helfen. Auf [so] können Sie zeigen, dass eine Antwort hilfreich war, indem Sie sie entweder erhöhen (Pfeil nach oben) oder akzeptieren (grüner Haken). – null