我目前正在尝试使用Phaser 2d游戏引擎。
我目前有这段代码:
// Generated by CoffeeScript 1.10.0
(function() {
var create, game, preload, update;
game = new Phaser.Game(800, 600, Phaser.AUTO, '', {
preload: preload,
create: create,
update: update
});
preload = function() {
return game.load.atlasJSONHash('seyan_f_torch', '../sprite_hashes/seyan_f_torch.png', '../sprite_hashes/seyan_f_torch.json');
};
create = function() {
var seyan_f_torch;
seyan_f_torch = game.add.sprite(0, 180, 'seyan_f_torch', '00219000.png');
seyan_f_torch.animations.add('walk-down', Phaser.Animation.generateFrameNames('', 219016, 219023, 9), 10, true, false);
};
update = function() {};
}).call(this);
然后,当我尝试加载它时,我得到了这个:
给出了无效的Phaser State对象。必须至少包含一个必需的函数:preload,create,update或render phaser.js:34530
Phaser v2.4.6 | Pixi.js v2.2.9 | WebGL | WebAudio http://phaser.io♥♥♥
Uncaught TypeError:无法设置undefined phaser.js的属性'game':29106
不确定这里有什么问题。任何信息都会非常感谢。
...
这是实际的CS文件:
game = new (Phaser.Game)(800, 600, Phaser.AUTO, '',
preload: preload
create: create
update: update)
preload = ->
game.load.atlasJSONHash 'seyan_f_torch', '../sprite_hashes/seyan_f_torch.png', '../sprite_hashes/seyan_f_torch.json'
create = ->
# Create Seyan_F_Torch
seyan_f_torch = game.add.sprite(0, 180, 'seyan_f_torch', '00219000.png')
seyan_f_torch.animations.add('walk-down', Phaser.Animation.generateFrameNames('', 219016, 219023, 9), 10, true, false);
setTimeout ->
update = ->
答案 0 :(得分:2)
我不是CoffeeScript,但我认为问题在于你没有将Object传递给Game构造函数。 Phaser需要一个格式良好的State Object来开始。您可以在Phaser.State类中找到一个示例(在src / core / State.js中的repo中)。可能你需要做的就是:
find . -type f | wc -l
答案 1 :(得分:0)
我遇到了同样的问题并发现,函数语法对Phaser很重要。
而不是
preload = function() {
};
它需要
function preload() {
};