我的代码据说可以显示两个按钮的精灵(没有什么非常复杂的(还是它?),但是什么也没出现,甚至蓝屏只应该创建游戏变量并启动就可以显示。我所有的代码都是遵循Excalibur官方文档编写的,所以发生了什么事?
代码:
var game = new ex.Engine({
width: 1024,
height: 768
});
function loadAssets()
{
var loader = new ex.Loader();
var resources = {
txGameTitle: new.ex.Texture("icons/GUI/final/"),
txStartButton: new.ex.Texture("icons/GUI/final/MenuPlayButton.png"),
txLoadButton: new.ex.Texture("icons/GUI/final/MenuLoadButton.png"),
txOptionsButton: new.ex.Texture("icons/GUI/final/"),
txExitButton: new.ex.Texture("icons/GUI/final/"),
txMenuBackground: new.ex.Texture("icons/GUI/final/"),
txMenuMusic: new.ex.Sound("icons/GUI/final/")
};
for (var loadable in resources)
{
if (resources.hasOwnProperty(loadable))
{
loader.addResource(resources[loadable]);
}
}
}
function startUp()
{
var StartButton = new ex.Actor.extend({
onInitialize: function (engine)
{
this.addDrawing(txStartButton.asSprite());
}
});
var LoadButton = new ex.Actor.extend({
onInitialize: function (engine)
{
this.addDrawing(txLoadButton.asSprite());
}
});
}
function init()
{
loadAssets();
startUp();
}
init();
game.start(loader).then(function () {
console.log("Game started!");
});
抱歉,格式错误。
答案 0 :(得分:1)
我认为这可能是因为代码错误。我注意到在文件末尾
game.start(loader)
已引用 loader 变量,但似乎未定义。在 loadAssets 函数内部创建了相同的变量,但它是局部变量。为了使用它,您需要在上面进行定义。
var loader;
function loadAssets() {
loader = ...
}
...other code
game.start(loader).then(...
另一个变体是在 loadAssets 函数之外定义加载程序。
var loader = new ex.Loader();
function loadAssets() {
var resources = {...
}
...other code
game.start(loader).then(...