AS3 Stop-Zeichen aus, bewegt sich durch Mauern

Ich will halt die Videoclips Bewegung, wenn es eine Wand trifft (ein weiterer movieclip).
Das Beispiel unten funktioniert, aber nach der Kollision der movieclip 'Blöcke', die alle Bewegung auf der linken Seite...
Meine Frage an Sie ist, ist dies ein guter Weg, und warum funktioniert das nicht?

Gibt es etwas falsch in diesem code, aber ich bin zu lernen.
Jetzt das Beispiel mit dem leftArrow Taste;

Variablen überprüfen die-Taste, wenn Sie auf die Wände und ob es sich bewegt oder nicht:

var leftArrow:Boolean;
var speed:int = 10;
var hitting:Boolean;
var ismoving:Boolean;

Ereignis-Listener für die Tasten/Bewegung und Erkennung von Kollisionen:

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

Erkennung von Kollisionen-Funktion:

function detectHit(e:Event) :void
{
   if(char.hitTestObject(bounds))
   {
       hitting = true;
   }
}

Funktion der linken Taste:

function keyPressed(event:KeyboardEvent):void
{

    if (event.keyCode == Keyboard.LEFT)
    {
       leftArrow = true;
    }

}

function keyReleased(event:KeyboardEvent):void 
{

    if (event.keyCode == Keyboard.LEFT) 
    {
        leftArrow = false;
    }

}

Und der Grund, warum es nicht funktioniert ist wohl hier, aber ich verstehe nicht, warum nicht:

function walking(event:Event):void {
    if (rightArrow) {
        char.x += speed;    
    }

    if (leftArrow && ! hitting) {
        char.x -= speed;
    }
    else
    {
        ismoving = false
    }

InformationsquelleAutor Opoe | 2011-10-09

Schreibe einen Kommentar