我有一个ts类,它实现了一个带有2个函数的接口,并实现了这两个函数。然后我有一个使用此接口键入的变量,它只获得此类的对象。然后我在不同的事件处理程序中使用这个变量并在每个函数中调用这两个函数中的一个,但是为什么其中一个函数工作正常,但第二个函数根本没有被调用,没有任何错误消息和停止代码执行 - func调用后仍然执行的下一行
这是代码:
screen.ts:
export interface Screen {
controller: Controller;
trySimulate(e: KeyboardEvent): boolean;
receive(data: any);
}
屏幕/ world.ts:
/// <reference path="../screen.ts"/>
export class World implements Screen {
controller: Controller;
waitingForRespond: boolean;
map: Map;
me: Player;
players: Player[];
// this function doesn't work
trySimulate = function (e: KeyboardEvent): boolean {
if (e.keyCode >= 47 && e.keyCode <= 50) {
this.waitingForRespond = true;
var dir: Direction = e.keyCode - 47;
return this.me.moveTo(dir);
}
return false;
}
// this function works
receive = function (data: any) {
this.waitingForRespond = false;
}
}
controller.ts:
export class Controller {
receiveServerData = function (e: MessageEvent) {
var msg = JSON.parse(e.data);
controller.screens[msg.target].receive(msg);
}
keyPressed = function (e: KeyboardEvent) {
if (controller.currentScreen.trySimulate(e)) {
...
return false;
}
return true;
}
}
我在线上设置断点
if (controller.currentScreen.trySimulate(e)) {
并且它被触发了,但是当我按下f11(步入)时,它跳过了func调用并直接转到返回true;线 - 为什么?