神剑项目未显示任何内容

时间:2018-08-26 04:53:00

标签: javascript game-engine

我的代码据说可以显示两个按钮的精灵(没有什么非常复杂的(还是它?),但是什么也没出现,甚至蓝屏只应该创建游戏变量并启动就可以显示。我所有的代码都是遵循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!");
});

抱歉,格式错误。

1 个答案:

答案 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(...