我按下按键之后,函数onKeyboardDown有时候会连续调用两次,导致出错。
代码如下:
@ccclass('Test')
export class Test extends Component {
@property
speed = 0;
private dir = 0;
onLoad() {
input.on(Input.EventType.KEY_DOWN, this.onKeyboardDown, this);
input.on(Input.EventType.KEY_UP, this.onKeyboardUp, this);
}
update(deltaTime: number) {
let pos = this.node.position;
pos = v3(pos.x + this.speed * this.dir * deltaTime, pos.y, pos.z);
this.node.setPosition(pos);
}
onDestroy() {
input.off(Input.EventType.KEY_DOWN, this.onKeyboardDown, this);
input.off(Input.EventType.KEY_UP, this.onKeyboardUp, this);
}
onKeyboardDown(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.ARROW_LEFT:
this.dir -= 1;
// Error: this.dir == -2
break;
case KeyCode.ARROW_RIGHT:
this.dir += 1;
break;
}
}
onKeyboardUp(event: EventKeyboard) {
switch (event.keyCode) {
case KeyCode.ARROW_LEFT:
this.dir += 1;
break;
case KeyCode.ARROW_RIGHT:
this.dir -= 1;
break;
}
}
}