As3, Wie flip einen movieclip zu Gesicht Bewegung Richtung?

Arbeiten auf einem Labyrinth-Spiel. Wenn dem leftkey gedrückt, wird die movieclip (char), biegen um 90 Grad nach Links.

Mich korrigieren, wenn ich falsch bin, aber ich dachte, ich könnte diesen code verwenden;

char.scaleX *= -1;

Aber das wichtigste ist, dass der Charakter nicht gehen durch die Wände des Labyrinths.
Und ich denke, das ist mein problem, die für die Umsetzung der obige code.
Weil es funktioniert nicht richtig, wenn ich hier rein stecke;

    if(!mazehit) {

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


                }

Meine Frage an Euch ist, wo muss ich den code, den spiegeln, den movieclip?

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;


        }
    }
}

vielen Dank für Ihre Zeit

InformationsquelleAutor Opoe | 2011-10-05
Schreibe einen Kommentar