Ich habe ein Spiel mit Phaser erstellt, und ich möchte es in TypeScript "portieren". Ich stoße auf ein Problem, wenn ich dieselbe Funktion aus mehreren verschiedenen Zuständen aufrufen möchte.TypeScript, verwenden Sie die gleiche Funktion in verschiedenen Phaser.States
Neben einigen anderen Variablen und Funktionen gibt es zum Beispiel eine Musik-Ein/Aus-Funktion und eine Funktion zum Ausblenden des gesamten Bildschirms auf Schwarz. Ich möchte diese in den verschiedenen Phaser.States
MainMenu, LevelSelect und Game wiederverwenden. Also lege ich sie als globale Variablen in den MyGameProj.Client-Namespace, aber dies gibt einen Fehler Cannot find name ..
, wenn ich sie aus dem MainMenu-Zustand aufrufen.
Ich weiß, dass globale Variablen und Funktionen als eine schlechte Sache angesehen werden, aber meine Frage ist;
Wie kann ich eine Funktion in mehreren verschiedenen Phaser.States wiederverwenden?
Ich habe versucht, die globalen Variablen und Funktionen in meinem Boot-Zustand hinzufügen, etwa so:
[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.
Aber dann, wenn ich versuche, meine die switchMusic zuzugreifen MainMenu state, gibt es einen Fehler "Kann den Namen switchMusic nicht finden". Sie können jedoch im Boot-Status verwendet und aufgerufen werden.
[MainMenu.ts]
module MyGameProj.Client {
export class MainMenu extends Phaser.State {
create() {
switchMusic(this.game, true); // <- error; Cannot find name switchMusic
//.. etc.
Vielen Dank für die sehr schnelle Antwort. Ich habe gerade mit TypeScript begonnen, und die Namenspakete und Module waren die gleichen, also werde ich auf jeden Fall die vorgeschlagenen Links überprüfen. – BdR