В настоящее время я использую Phaser 2.x. Проблема в методе create
. Я передаю функцию в качестве аргумента методу this.claimButton.events.onInputDown.add()
. Но он не может сослаться на функцию, на которую я сейчас ссылаюсь. Что я могу сделать для этого.
Я пробовал с this.game.claimTicket()
и this.game.claimTicket
, а также пробовал this.claimTicket
в this.claimButton.events.onInputDown.add()
в качестве параметра. Но я все еще получаю сообщение об ошибке: Uncaught Error: Phaser.Signal: слушатель является обязательным параметром add () и должен быть функцией. Но когда я пытался this.claimButton.events.onInputDown.add(function () { console.log('hello') })
Это работало просто отлично.
var GameState = {
//initiate game settings
init: () => {
//adapt to screen size, fit all the game
this.game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;
this.game.scale.pageAlignHorizontally = true;
this.game.scale.pageAlignVertically = true;
},
preload: () => {
this.game.load.image('background', 'assets/images/background.jpg')
this.game.load.image('ticket', 'assets/images/ticket2.jpg')
this.game.load.image('claimButton', 'assets/images/claimButton.png')
},
create: () => {
this.background = this.game.add.sprite(0, 0, 'background')
this.ticket = this.game.add.sprite(this.game.world.centerX, 130, 'ticket')
this.ticket.anchor.setTo(0.5)
this.claimButton = this.game.add.sprite(this.game.world.centerX + 180, 125, 'claimButton')
this.claimButton.anchor.setTo(0.5);
this.claimButton.inputEnabled = true;
this.claimButton.input.pixelPerfectClick = true;
//this.claimButton.events.onInputDown.add(function () { console.log('It worked as I expected') })
this.claimButton.events.onInputDown.add(this.game.claimTicket,this)
},
claimTicket: (sprite) => {
console.log('claimed')
}
};
//initiate the Phaser framework
var game = new Phaser.Game(640, 360, Phaser.AUTO);
game.state.add('GameState', GameState);
game.state.start('GameState');
Я ожидал, что функция claimTicket
будет вызываться изнутри this.claimButton.events.onInputDown.add()
, но она показывает ошибку