2013-01-16 48 views
0

我遇到的問題是我不知道如何讓字符停止跳躍。AS3 Juming/Gravity問題

例如,當我經常打空間時,它一直跳躍跳躍。當我按下空格時,我希望它跳起來,而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 
    } 
} 

回答

1

我通常只是有一個像它設置爲true時,該層的土地,當他們跳設置爲false「onFloor」布爾變量。那麼只有讓他們跳起來,如果他們是onFloor。所以在這裏我已經將其設置爲true,你if(player.y > floor)內,假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; 
    } 
} 
+0

非常感謝你非常。 – user1666767