Аудио Введите Phaser?

Я разрабатываю игру, в которой игроку будет дано 4 звука, и он должен угадать, что общего у этих звуков. Она работает точно так же, как игра «4 картинки 1 слово», но вместо картинок игрок должен угадывать звуки.

Пользователь должен нажать клавишу 1,2,3 и 4, чтобы услышать звуки. Как только игрок услышал звуки, игрок должен угадать, что общего у этих звуков. Как мне закодировать часть, где после того, как игрок услышал звук 4, он должен ввести слово, чтобы угадать его?

Например, на уровне 1 игроку будут даны звуки кошки, собаки, попугая и хомяка, и он должен угадать общее между этими четырьмя звуками. Игрок, услышав звуки, будет уведомлен о том, что слово состоит из 3 букв, и он должен угадать, что это такое. Если, скажем, игрок вставит букву «Е», то «Е» будет вставлено в пропущенное слово, и игроку нужно будет угадать оставшиеся слова. Правильным словом для этого будет «ПЭТ». Как это закодировать в Phaser?

(Кстати, в игре нет графики или анимации, потому что она предназначена для слепых пользователей).

Я получаю сообщение об ошибке "Uncaught SyntaxError: Unexpected token{" в строке "if (game.input.keyboard.isDown(Phaser.Keyboard.P) {"

Вход, который я все еще пытаюсь воспроизвести, услышав, что четыре звука не работают. Я понятия не имею, где я ошибся.

Мой код:

  var game = new Phaser.Game(400,490, Phaser.AUTO, 'gameDiv');
  var key1;
  var key2;
  var key3;
  var key4;
  var speech;
  var level1;
  var PCorrect;
  var ECorrect;
  var TCorrect;
  var TryAgain;
  var mainState = {


preload: function() {
    game.stage.backgroundColor ='#71c5cf'
    game.load.audio('the_intro', 'assets/speech_intro.wav');
    game.load.audio('start', 'assets/cat_meow.wav');
    game.load.audio('second', 'assets/dog_bark.wav');
    game.load.audio('third', 'assets/mouse_squeak.wav');
    game.load.audio('fourth', 'assets/parrot.wav');
    game.load.audio('default' , 'assets/wrong_key.wav');
    game.load.audio('levelPet' , 'assets/GuessPet.wav');
    game.load.audio('P', 'assets/PforPet.wav');
    game.load.audio('T', 'assets/TforPet.wav');
    game.load.audio('E', 'assets/EforPet.wav');
    game.load.audio('Try','assets/WrongAnswer.wav');

},


create: function() {

     //introduction narration
     speech = game.add.audio('the_intro');

     speech.play();

    //Sound added 1st
    this.meowSound = game.add.audio('start');
    this.barkSound = game.add.audio('second');
    this.softSound = game.add.audio('third');
    this.talkingSound = game.add.audio('fourth');
    this.noSound = game.add.audio('default');

    //Call the sound when the key is pressed
    var self = this;
    game.input.keyboard.onDownCallback = function(e) {
        var keycode = e.keycode || e.which;

        switch(keycode) {

            case Phaser.Keyboard.ONE:
                 self.addCat();
               break;

            case Phaser.Keyboard.TWO:
               self.addDog();
               break;

            case Phaser.Keyboard.THREE:
                self.addMouse();
                break;

            case Phaser.Keyboard.FOUR:
                 self.addParrot();

                  level1 = game.add.audio('levelPet');
                  level1.play();
                 break;

            default:
                 self.addOthers();
                 break;
               break;



        }


    }


  },

update: function(){

    this.PLevel1 = game.add.audio('P');
    this.ELevel1 = game.add.audio('E');
    this.TLevel1 = game.add.audio('T');
    this.WrongAns = game.add.audion('Try');

    var self = this;

    if (acceptInput) {
    if (game.input.keyboard.isDown(Phaser.Keyboard.P) {

        self.addP();

    } else if (game.input.keyboard.isDown(Phaser.Keyboard.E)) {

        self.addE();

    } else if (game.input.keyboard.isDown(Phaser.Keyboard.T)) {
        self.addT();
    }

     else 
     {
        self.addWrong();
     }





  }

  }


addCat: function() {

    this.meowSound.play();
},

addDog: function() {
    this.barkSound.play();
},

addMouse: function() {
    this.softSound.play();
},

addParrot: function() {
    this.talkingSound.play();
},

addOthers: function() {
    this.noSound.play();
},

addP: function() {
    this.PLevel1.play();
}

addE: function() {
    this.ELevel1.play();

 }

addT: function() {
    this.TLevel1.play();
}

addWrong: function() {
    this.WrongAns.play();
}
};



game.state.add('main', mainState);
game.state.start('main');

person Community    schedule 21.09.2014    source источник
comment
Вам не хватает )   -  person jaket    schedule 21.09.2014
comment
Большое спасибо. Но все равно вход не работает. Мне не хватает ссылок для вызова функции обновления?   -  person    schedule 21.09.2014
comment
Этот вопрос кажется не по теме, потому что это мусор.   -  person Shomz    schedule 24.09.2014


Ответы (1)


Я бы посоветовал вам не слушать конкретные ключи, а все их. Вы можете сделать это с помощью метода Keyboard.addCallbacks. Подпись такая:

/** * Add callbacks to the Keyboard handler so that each time a key is pressed down or released the callbacks are activated. * * @method Phaser.Keyboard#addCallbacks * @param {Object} context - The context under which the callbacks are run. * @param {function} [onDown=null] - This callback is invoked every time a key is pressed down. * @param {function} [onUp=null] - This callback is invoked every time a key is released. * @param {function} [onPress=null] - This callback is invoked every time the onkeypress event is raised. */ addCallbacks: function (context, onDown, onUp, onPress) {

Вам нужно только знать о событии onPress, чтобы вы могли:

game.input.keyboard.addCallbacks(this, null, null, keyPress);

Где keyPress — это имя функции, которая вызывается при нажатии клавиши. Эта функция отправит символ, который был нажат, в виде строки. Таким образом, в этой функции, если вы ищете слово PET в плеере, вы можете проверить, была ли нажата клавиша P, E или T, и выделить ее соответствующим образом. Вот рабочий пример, который я собрал для вас: http://examples.phaser.io/debug.php?f=input/word+input.js

person PhotonStorm    schedule 21.09.2014
comment
Большое спасибо. Это означает, что если я использую метод addCallbacks, он прослушивает все ключи и выделяет нужный ключ, который нужен пользователю? А также означает ли это, что мне не нужна функция обновления? - person ; 22.09.2014
comment
Верный. Он слушает ВСЕ клавиши, поэтому иногда вам может понадобиться обрабатывать специальные клавиши, такие как возврат, удаление или ввод, чтобы убедиться, что ваша игра не ведет себя странно. Но это зависит от вашей игры, а не от Phaser. - person PhotonStorm; 22.09.2014