JavaScriptとTypescriptの両方が初めてです。私はJavascriptで簡単なPhaserゲームを書いて、Typescript ES2015(ES6)に書き直したいと思っています。
Phaser.Gameクラスを拡張して、コンストラクタを介して変数を渡すようにしました。これはWebSocketの作成に使用されます。このソケットはGameまたはState型のプロパティとして存在する可能性があります(この例ではこれを示しています)。
Phaser.Stateクラスを拡張して、websocketの.onmessageメンバー関数を使用してwebsocketデータによって設定する必要があるプロパティを追加しました。PhaserでTypescript拡張クラスを正しく使用する方法
私はcreateWebsocketを完全性のための関数として示しましたが、実際にはクラスの1つのメンバ関数です。
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()
IはgetCurrentStateとして(トランス)コンパイラエラーを(取得)は拡張クラスタイプがstate.add関数に渡されていても、基本クラスではない拡張クラスのインスタンスを返し
I型が.add関数に渡されるときに、wsPathをBootクラスのコンストラクタに渡す方法はありません。