我正在嘗試使用操作腳本2.0製作一個簡單的平臺遊戲,但是我從鍵盤獲取輸入時遇到了問題。我有兩個函數「myKeyDown」和「myKeyUp」,無論何時按下/釋放鍵都會被調用。獲取已發佈密鑰的代碼
keyListener.onKeyDown = function(){
myKeyDown();
}
keyListener.onKeyUp = function(){
myKeyUp();
}
該函數檢查使用Key.getCode()方法按下哪個鍵。它適用於myKeyDown,但它是myKeyUp的bug。如果(例如)我先按A(向左移動),然後W(跳躍),然後釋放W然後釋放A,則會發生錯誤。玩家不會停止移動(即使這是您釋放時發生的情況A)
我明白這裏的問題。 Key.getcode返回最後一個按鍵的代碼,我想要的是最後釋放的鍵的代碼。我一直在尋找像這樣的功能小時,但我還沒有找到任何東西。
這裏有兩個myKeyDown和myKeyUp功能
function myKeyDown(){
//A
if(Key.getCode() == 65){
velX=-3;
}else
//D
if(Key.getCode() == 68){
velX=3;
}else
//W
if(Key.getCode() == 87){
if(isInAir == false){
jump();
}
}
}
function myKeyUp(){
//A
if(Key.getCode() == 65){
if(velX==-3){
velX=0;
}
}else
//D
if(Key.getCode() == 68){
if(velX==3){
velX=0;
}
}
}
混合事件和投票,老是出問題。即使您存儲了密鑰的狀態,您也可以在事件處理程序啓動時受到處理。如果你的谷歌動作多個鍵,你會得到一些想法。 –