我使用phaser 2.6.1。
我创作了一个动画。这很好但有时动画没有启动。我不知道为什么。
在create()
函数中,我为spritesheet添加了动画:
this.car = game.add.sprite(game.world.centerX,500, 'car');
this.car.animations.add('mover',[0,1,2,3],1000, true);
this.car.fixedToCamera = true;
重叠时,我启动函数来设置动画:
game.physics.arcade.overlap(this.car, this.borders, this.canMove, null, this);
这是我的功能:
},canMove: function(car, objet){
if(crash == 0){
crash = 1;
_this.car.animations.play("mover");
console.log("fire")
setTimeout(function(){
_this.car.animations.stop();
_this.car.frame = 0;
crash = 0;
},1000)
}
}
当汽车重叠边框时,会触发此功能。
console.log()
被触发,但动画突然没有开始。我可以重新启动我的页面很多时间,即使console.log()
被触发,动画也不会启动。
答案 0 :(得分:0)
问题是因为我首先用以下方式初始化了我的车:
this.car = game.add.sprite(game.world.centerX,500, 'car');
this.car.animations.add('mover',[0,1,2,3],1000, true);
this.car.fixedToCamera = true;
_this = this
在我的功能之后,我直接用_this
我使用了_this
,因为在setTimeout()
内,this
属性不等于文档的this
我不知道为什么但是如果我首先使用this
进行初始化,并且在我使用_this
进行调用后,这种情况并不正常。另外,为了解决我的问题,我直接从_this
开始。
_this = this;
_this.car = game.add.sprite(game.world.centerX,500, 'car');
_this.car.animations.add('mover',[0,1,2,3],1000, true);
_this.car.fixedToCamera = true;