我已經使用Phaser創建了一個遊戲,並且我想將它「移植」到TypeScript。當我想從幾個不同的狀態調用相同的函數時,我遇到了一個問題。TypeScript,在不同Phaser.States中重複使用相同的功能
在其他一些變量和功能中,例如有音樂開/關功能和將整個屏幕淡化爲黑色的功能。我想在不同的Phaser.States
MainMenu,LevelSelect和Game中重複使用它們。所以我把它們作爲全局變量放在MyGameProj.Client命名空間中,但是當我從MainMenu狀態調用它們時,這會給出錯誤Cannot find name ..
。
我知道全局變量和函數被認爲是壞東西,但我的問題是;
如何在幾個不同的Phaser.States中重新使用一個函數?
我試着加入全局變量和函數在我開機狀態下,像這樣:
[Boot.ts]
module MyGameProj.Client {
var SOUND_IS_ON = true;
var MUSIC_IS_ON = true;
function switchMusic(game, onoff) {
MUSIC_IS_ON = onoff;
// .. etc.
}
export class Boot extends Phaser.State {
preload() {
switchMusic(this.game, true); // no errors
//.. etc.
但是當我嘗試訪問switchMusic我MainMenu狀態,它給出了一個錯誤'無法找到名稱switchMusic'。但是,它們可以在Boot狀態下使用和調用。
[MainMenu.ts]
module MyGameProj.Client {
export class MainMenu extends Phaser.State {
create() {
switchMusic(this.game, true); // <- error; Cannot find name switchMusic
//.. etc.
感謝您的快速回復。我剛剛開始使用TypeScript,想象中的命名空間和模塊是相同的,所以我一定會檢查出建議的鏈接。 – BdR