javascript - Typescript:如何在有限時間內捕捉鍵盤事件
我正在編寫某種電子遊戲,玩家每回合有 N 秒的時間,在這 N 秒內他們可以輸入鍵盤指令。一旦 N 秒過去,輸入的指令就會被回傳(例如,放入陣列中)、處理並執行一些動作。
執行流程將會類似如下所示:
while (!gameOver) {
// do some stuff like knowing who's player turn is it
var enteredInput = captureKeyboardInputsFor(seconds);
// process input & do actions
}
我確實已經在腦海中很好地定義了遊戲邏輯,但我正在嘗試弄清楚如何使用 TypeScript 完成這件事,同時保持我的循環遊戲同步(因為玩家是輪流進行遊戲的),擁有
var enteredInput = captureKeyboardInputsFor(seconds);排隊等待直到 N 秒過去。
編輯:
另外,我在考慮是否有可能加入 CPU 玩家。在那種情況下,就不需要等待或捕捉輸入了:
while (!gameOver) {
// do some stuff like knowing who's player turn is it
var enteredInput;
if (player.isHuman()) {
enteredInput = captureKeyboardInputsFor(seconds);
} else {
enteredInput = calculateRandomCPUPlayerInput();
}
// process input & do actions
}
答案#1
你可以使用 setTimeout 函數在 N 秒後解除綁定 captureKeyboardInputs 監聽器,如下所示。這是你要找的嗎:
let fn = () => {
// unbind capture keys event
// process input & do actions
};
let a = setTimeout(this.fn, seconds * 1000);
如果你需要修改這個,你可以這樣做:
clearTimeout(a);
if (isProcessNow) {
this.fn();
} else {
a = setTimeout(this.fn, newSeconds * 1000);
}
