#javascript #phaser-framework
#javascript #phaser-фреймворк
Вопрос:
Я программирую игру, и это ее часть. Я хочу, чтобы программа циклически просматривала разные изображения запущенного спрайта, которые я загрузил. Я создал переменную, чтобы программа знала, какое изображение отображается на экране запущенного символа. Программа не распознает, что это объявленная переменная. Я просто совершаю простую ошибку с Javascript?
Я попытался переместить объявление переменной вокруг моего кода и поместить в него разные вещи. Кажется, ничего не работает.
class Example1 extends Phaser.Scene {
constructor() {
super({key: "Example1"});
}
//variable for the current running stance which does not work
var playerBoard = 1;
preload() {
this.load.image('Background', 'assets/Background.jpg');
this.load.image('4 JUMP_000', 'assets/4 JUMP_000.png');
let run1 = this.load.image('3 RUN_000', 'assets/3 RUN_000.png');
let run2 = this.load.image('3 RUN_001', 'assets/3 RUN_001.png');
let run3 = this.load.image('3 RUN_002', 'assets/3 RUN_002.png');
let run4 = this.load.image('3 RUN_003', 'assets/3 RUN_003.png');
let run5 = this.load.image('3 RUN_004', 'assets/3 RUN_004.png');
}
/*another variable to help return to the first running stance when the sprite stops running*/
let runningStance = run1;
//function that switches the running stances
runningScene(x,y){
if(this.input.keyboard.on("keyDown_D")){
while(this.input.keyboard.on("keyDown_D")) {
if (this.playerBoard = 1) {
this.playerBoard1 = 2;
this.image = this.add.image(this.image.x, this.image.y, '3 RUN_001');
runningStance = run2;
run1.visable = false;
}
Часть кода из программы не включена, так как это заняло бы слишком много места. Что не работает, так это объявление переменной, поскольку оно не позволяет функции if работать должным образом. У меня установлен phaser, на который вы можете ссылаться в коде. Предполагается, что выходные данные скрывают начальное изображение и показывают следующее в последовательности, которое будет run2 .
Комментарии:
1. где
runningScene
вызывается / передается?2. runningScene не объявлен, вероятно, кстати, также run1 и run2 нигде не объявлены
Ответ №1:
Попробуйте объявить playerBoard
в конструкторе:
constructor() {
super({key: "Example1"});
this.playerBoard = 1;
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
То же самое для runningStance
, пожалуйста, взгляните на приведенную выше ссылку, чтобы проверить, как работают классы
Ответ №2:
Эта строка:
if (this.playerBoard = 1) {
плохо по двум причинам. Во-первых, =
что, очевидно, означало быть ==
или ===
. Во-вторых, playerBoard
это переменная, и здесь вы пытаетесь получить доступ и свойство объекта. Несколькими строками ранее вы объявили var playerBoard = 1;
, так что просто прочитайте это
if (playerBoard === 1) {