移相器在哪里引用 tween 的 'useFrames'?

Where does phaser reference 'useFrames' of tween?

我在 Phaser.Tweens 中使用 phaser3。

但是补间依赖于设备的性能。防止它,使用 'useFrames'.

例如)

var tween = this.tweens.add({
    targets: textObj,
    alpha: 1.0,
    x: 300,
    delay: 0,
    yoyo: true,
    repeat: -1,
    duration: 1000,
    useFrames: true
  });

...
var frameNumber = 0;
function update(time, delta) {
  frameNumber++;
  if (frameNumber == 250) {
    console.log(textObj.x);
  }
}

您可以参考或修改示例:https://codesandbox.io/s/phaser-3-template-5uu48

结果是:254.20000000000002

所有设备显示 254.20000000000002。如果 useframes 为 false,所有设备将显示不同的日志。

我正在观看查看 phaser3 源代码以了解 useFrames。

    /**
     * Internal method that advances the Tween based on the time values.
     *
     * @method Phaser.Tweens.Tween#update
     * @fires Phaser.Tweens.Events#TWEEN_COMPLETE
     * @fires Phaser.Tweens.Events#TWEEN_LOOP
     * @fires Phaser.Tweens.Events#TWEEN_START
     * @since 3.0.0

    update: function (timestamp, delta)
    {
        if (this.state === TWEEN_CONST.PAUSED)
        {
            return false;
        }

        if (this.useFrames)
        {
            delta = 1 * this.parent.timeScale;
        }

        delta *= this.timeScale;

以上代码仅参考useFrames使用parent.timeScale.

我在任何地方都找不到系统时间戳。

希望了解useFrames。

我找到了答案。

 @method Phaser.Core.TimeStep#step

上面的步进函数产生增量,然后它的值传播到补间的增量。

我们只是分配delta值来忽略它的delta。