移相器3中的计时器无法正常工作

时间:2019-05-15 17:38:08

标签: javascript phaser-framework

我有一个 spawn 功能,可以执行某些任务。在函数返回之前,我想延迟另一个函数调用。

我尝试使用time.addEvent,但是没有运气,因为它似乎无法在 spawn 函数中使用。但是,计时器可以在 create 函数中完美运行。

到目前为止,我的代码:

create(){
  newMethod = spawn.bind(this);
  newMethod();
}

function spawn(){
  //do stuff
  timer = this.time.addEvent({
    delay: 3000,
    callback: functionDelay,
    loop: false
  });
}

function functionDelay(){
  console.log("Works!");
}

1 个答案:

答案 0 :(得分:1)

var delayText;
var delayedEvent;

class myScene extends Phaser.Scene {

    constructor (config)
    {
      super(config);
    }

    preload ()
    {
      this.load.image('dude', 'sprites/phaser-dude.png')
    }
   
    create () 
    {
      delayText = this.add.text(50, 50);
      delayedEvent = this.time.delayedCall(3000, this.spawn, [], this);
    }
    
    spawn()
    {
      var sprite = this.add.sprite(300, 50, 'dude')
    }
    
    update()
    {
      delayText.setText('Event.progress: ' + delayedEvent.getProgress().toString().substr(0, 4));
    }
}

var config = {
    type: Phaser.AUTO,
    parent: 'phaser-example',
    loader: {
      baseURL: 'https://cdn.jsdelivr.net/gh/samme/phaser-examples-assets@v2.0.0/assets/',
      crossOrigin: 'anonymous'
    },
    width: 800,
    height: 600
};

var game = new Phaser.Game(config);

game.scene.add('myScene', myScene, true);
<script src="//cdn.jsdelivr.net/npm/phaser@3.17.0/dist/phaser.min.js"></script>