0

私が抱えている問題は、キャラクターのジャンプを止める方法がわからないことです。

たとえば、私が常にスペースを打つと、ジャンプとジャンプを続けます。スペースを押すとジャンプしたいのですが、MC がジャンプしている間はスペース ボタンを無効にして (または、可能であれば無効にする方法も教えてくださいMouseEvents)、空中にいる間は MC が 1 回だけジャンプできるようにします。

var gravity = 0.8;
var floor = 251;
player.y = floor;
player.speedY = 0;
player.impulsion = 10;
stage.addEventListener(Event.ENTER_FRAME, enterframe);
function enterframe(e:Event) {
    player.speedY += gravity;
    player.y += player.speedY;
    if(player.y > floor) {
        player.speedY = 0;
        player.y = floor

    }

}
stage.addEventListener(KeyboardEvent.KEY_DOWN, space);
function space(e:KeyboardEvent) {
    if(e.keyCode == Keyboard.SPACE) {
        player.speedY = -player.impulsion
    }
}
4

1 に答える 1

2

onFloor私は通常、レイヤーが着地すると true に設定され、ジャンプすると false に設定される" " のようなブール変数を持っています。次に、 の場合にのみジャンプさせますonFloor。だからここで私はそれをあなたの中でtrueに設定しif(player.y > floor)、後にfalseに設定しましたif(e.keyCode == Keyboard.SPACE && onFloor):

var gravity = 0.8;
var floor = 251;
var onFloor:Boolean = false;

player.y = floor;
player.speedY = 0;
player.impulsion = 10;
stage.addEventListener(Event.ENTER_FRAME, enterframe);
function enterframe(e:Event) {
    player.speedY += gravity;
    player.y += player.speedY;
    if(player.y > floor) {
        player.speedY = 0;
        player.y = floor;
        onFloor = true;
    }

}
stage.addEventListener(KeyboardEvent.KEY_DOWN, space);
function space(e:KeyboardEvent) {
    if(e.keyCode == Keyboard.SPACE && onFloor) {
        player.speedY = -player.impulsion;
        onFloor = false;
    }
}
于 2013-01-16T19:42:26.930 に答える