动画不在Phaser.js中启动一次

时间:2017-11-30 09:07:57

标签: javascript jquery phaser-framework

我使用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()被触发,动画也不会启动。

1 个答案:

答案 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;