移相器在哪里引用 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。
我在 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。