【问题标题】:AS3 Juming/Gravity issueAS3 Juming/Gravity 问题
【发布时间】:2013-01-16 19:25:23
【问题描述】:

我遇到的问题是我不知道如何让角色停止跳跃。

例如,当我不断地击中空间时,它会不停地跳跃。当我按下空格键时,我希望它跳跃,而当 MC 跳跃时,我想禁用空格键(或者如果可能的话,你能告诉我如何禁用MouseEvents),以便在空中时 MC 只能跳跃一次.

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
    }
}

【问题讨论】:

    标签: actionscript-3 movieclip gravity


    【解决方案1】:

    我通常只有一个布尔变量,如“onFloor”,当图层着陆时设置为真,当他们跳跃时设置为假。然后只有当他们是onFloor时才让他们跳。所以在这里我在你的if(player.y > floor)中设置为true,在if(e.keyCode == Keyboard.SPACE && onFloor)之后设置为false:

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多