Проект Экскалибур ничего не показывает - PullRequest
0 голосов
/ 26 августа 2018

Мой код предположительно сделан так, чтобы показывать два спрайта кнопок (ничего ужасно сложного (или нет?), Но ничего не появляется, даже синий экран, который должен отображаться только при создании игровой переменной и ее инициации). Весь мой код был написан на основе официальной документации 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 голосов
/ 26 августа 2018

Я думаю, что это может быть из-за ошибки кода. Я заметил, что прямо в конце файла

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