我对Javascript和Typescript都是新手。我用Javascript编写了一个简单的Phaser游戏,现在想用Typescript ES2015(ES6)重新编写它。
我已经扩展Phaser.Game类,以便通过它的构造函数传递一个变量。这用于创建websocket。这个套接字可以作为Game或State类型的一个属性存在(我在示例中显示了这一点)。
我已经扩展Phaser.State类以包含需要通过websocket的.onmessage成员函数由websocket数据设置的属性。如何使用Phaser正确使用Typescript扩展类
为了完整性,我已经展示了createWebsocket作为函数,实际上它是其中一个类的成员函数。
function createWebsocket(wsPath, callback){
var ws = new WebSocket(wxPath);
ws.onmessage = callback;
return ws;
}
export class Game extends Phaser.Game {
csocket: WebSocket;
constructor(wsPath, container) {
this.state.add('Boot', Boot, false);
this.csocket = createWebsocket(wsPath, this.handleMsg);
}
export class Boot extends Phaser.State {
csocket: WebSocket;
constructor(){super();}
my_value: number;
setMyValue(value) {this.my_value = value};
this.csocket = createWebsocket(wsPath, this.handleMsg);
}
我该如何将数据从扩展的Game类实例传递到Boot实例或访问Boot实例的createWebsocket成员函数?
如果我在游戏中使用以下内容;
state = this.state.getCurrentState();
state.setValue()
我得到了(反)编译器错误,如getCurrentState()返回基类的实例并不即使扩展类的类型传递给state.add功能
我的扩展类看到没有办法将wsPath传递给Boot类的构造函数,因为类型被传递给.add函数。