JavaScript Как я могу получить значение и поместить его в функцию - PullRequest
0 голосов
/ 24 августа 2018

Вы можете проверить все мои коды в этом Ссылка

и есть демо со страницами github Ссылка

Теперь, когда я запускаю игру, я могу видеть игровую среду. Но я хочу, чтобы он выбрал персонажа, которого я хочу.

Так что я использую VEX Libaray, чтобы использовать диалог, который спрашивает, какой персонаж. Вы можете проверить мой скриншот. enter image description here

Так что я делаю это, когда нажимаю на каждую кнопку, которую он может напечатать следующим образом.

enter image description here

После этого только я должен сделать, это я должен поставить значение this.sprite. Но я не знаю, как я могу поместить это в Player.

enter image description here

и основной код здесь.

// To choose Character with VEX Library
function click1() {
    vex.dialog.open({
        message: 'Which character do you want to play?',
        buttons: [
            $.extend({}, vex.dialog.buttons.NO, {
                className: 'vex-dialog-button-primary-horizontal',
                text: 'Char-Boy',
                click: function (e) {
                    this.value = 'char-boy';
                    this.close();
                }
            }),
            $.extend({}, vex.dialog.buttons.NO, {
                className: 'vex-dialog-button-primary-horizontal',
                text: 'Char-Cat-Girl',
                click: function (e) {
                    this.value = 'char-cat-girl';
                    this.close();
                }
            }),
            $.extend({}, vex.dialog.buttons.NO, {
                className: 'vex-dialog-button-primary-horizontal',
                text: 'Char-Horn-Girl',
                click: function (e) {
                    this.value = 'char-horn-girl';
                    this.close();
                }
            }),
            $.extend({}, vex.dialog.buttons.NO, {
                className: 'vex-dialog-button-primary-horizontal',
                text: 'Char-Pink-Girl',
                click: function (e) {
                    this.value = 'char-pink-girl';
                    this.close();
                }
            }),
            $.extend({}, vex.dialog.buttons.NO, {
                className: 'vex-dialog-button-primary-horizontal',
                text: 'Char-Princess-Girl',
                click: function (e) {
                    this.value = 'char-princess-girl';
                    this.close();
                }
            })
        ],
        callback: function (value) {
            // char-boy','char-cat-girl','char-horn-girl','char-pink-girl','char-princess-girl
            if (value === 'char-boy') {
                console.log('You choose Char-boy');
                return value;
            } else if (value === 'char-cat-girl') {
                console.log('You choose Char-Cat-Girl');
                return value;
            } else if (value === 'char-horn-girl') {
                console.log('you choose Char-Horn-Girl');
                return value;
            } else if (value === 'char-pink-girl') {
                console.log('You Choose Char-Pink-Girl');
                return value;
            } else if (value === 'char-princess-girl') {
                console.log('You Choose Char-Princess-Girl');
                return value;
            } else {
                console.log('Choose Nothing');
                return value;
            }
        }
    })
}

let Player = function (x, y, speed, value) {
    this.x = x;
    this.y = y;
    this.speed = speed;
    this.sprite = 'images/' + value + '.png';
};

1 Ответ

0 голосов
/ 24 августа 2018

Я предполагаю, что вы создадите новый экземпляр Player позже при инициализации игры, поэтому, возможно, вы могли бы использовать прототип Player, чтобы установить значение, например так:

let Player = function (x, y, speed) {
   this.x = x;
   this.y = y;
   this.speed = speed;
   this.sprite = 'images/' + this.value + '.png';
};
Player.prototype.value = 'char-boy'; // this should go inside vex callback
console.log(new Player(50,50,100).sprite); // this should print "images/char-boy.png"

Прикрепление ссылки на документацию оПрототип: https://www.w3schools.com/js/js_object_prototypes.asp

...