私はすでにstackoverflowのどこでも見てきましたが、これに対する回答は見つかりませんでした。Javascript closure(this)
キャッチされない例外TypeError:this.rsGameは(this.addEnemyほぼ同じ)関数ではありません
let game = new Phaser.Game(600,600);
let speed = 500;
let scyla = {
preload:() => {
game.load.image('bg', 'assets/bg.png');
game.load.image('pl', 'assets/pl.png');
game.load.image('enemy', 'assets/enemy.png');
},
create:() => {
game.physics.startSystem(Phaser.Physics.ARCADE)
game.add.sprite(0,0, 'bg');
this.player = game.add.sprite(300, 500, 'pl');
this.player.anchor.set(0.5);
game.physics.arcade.enable(this.player);
this.cursors = game.input.keyboard.createCursorKeys();
this.enemies = game.add.group();
// this.timer = game.time.events.loop(200, this.addEnemy(), this);
},
update:() => {
this.player.body.velocity.x = 0;
this.player.body.velocity.y = 0;
if (this.cursors.left.isDown)
this.player.body.velocity.x = speed * -1;
if (this.cursors.right.isDown)
this.player.body.velocity.x = speed;
if (this.cursors.up.isDown)
this.player.body.velocity.y = speed * -1;
if (this.cursors.down.isDown)
this.player.body.velocity.y = speed;
if (this.player.inWorld === false)
this.rsGame();
},
rsGame:() => {
game.state.start('scyla');
},
addEnemy:() => {
let enemy = game.add.sprite(300, 100, 'enemy');
game.physics.arcade.enable(enemy);
enemy.body.gravity.y = 200;
this.enemies.add(enemy);
enemy.checkWorldBounds = true;
enemy.outOfBoundsKill = true;
}
}
game.state.add('scyla', scyla);
game.state.start('scyla');
私は、これは窓がとにかくオブジェクトを返す
let self = this
のようなものを試してみました。これは、クロージャとは何かを持っていますが、私は正確に
は、この問題を解決する方法がわからない理解していない:/
または簡潔なメソッド宣言: 'update(){' – Bergi