【发布时间】:2015-07-23 05:20:23
【问题描述】:
我刚开始使用 Phaser JS 进行游戏开发,但遇到了一个奇怪的问题,我需要一些帮助。
让我展示我的代码并解释哪里出了问题:
class SimpleGame {
game: Phaser.Game;
csvTM: string;
constructor (csvTM: string) {
this.csvTM = csvTM;
this.game = new Phaser.Game(800, 600, Phaser.AUTO, 'content', { preload: this.preload, create: this.create });
}
test() {
console.log("map test: " + this.csvTM);
}
preload() {
console.log("map preload: " + this.csvTM);
this.game.load.image('logo', 'empty_room.png');
this.game.load.tilemap("ItsTheMap", this.csvTM, null, Phaser.Tilemap.CSV);
this.game.load.image("Tiles", "concrete.png");
}
create() {
console.log("map create: " + this.csvTM);
var map = this.game.add.tilemap('ItsTheMap', 32, 32);
map.addTilesetImage("Tiles");
var layer = map.createLayer(0);
layer.resizeWorld();
}
}
现在我在这里要做的只是将一个 csv 文件路径传递给 SimpleGame 对象的构造函数。仅使用绝对路径时,一切正常,我可以看到网格等。当我尝试使用变量时,问题就出现了。请注意,我有三个日志语句都显示 csvTM 变量的内容。现在我要做的是首先:
var game = new SimpleGame(msg["Commands"][0][1]);
game.test();
加载新的移相器对象并将文件路径传递给构造函数。现在我 100% 确定设置了局部变量 csvTM,因为当我执行上面的 game.test() 时,我看到了文件路径。然而,在预加载和创建 csvTM 时始终未定义.. 从而破坏了我的代码。我确实注意到在构造函数中创建的游戏对象似乎可以工作并且总是被定义。
有谁知道为什么我的局部变量字符串只在预加载和创建中未定义,而游戏局部变量似乎已定义?
感谢您的帮助!
【问题讨论】:
标签: javascript typescript phaser-framework