我有 4 个可重复使用的补间,它们应该相对于其当前位置移动目标。
它们中的每一个都与此示例基本相同,但对于每个基本方向:
goLeft = this.tweens.add({
targets: gamePieceSprite,
x: {value: '-=64'},
duration: 1000,
paused: true
});
由于我希望能够多次使用这些补间,所以我使用了
restart()
方法,我想从 Sprite 的当前位置播放补间,但是即使我改变了 Sprite 的位置,当我调用函数重新启动时它从它第一次播放的坐标而不是目标 Sprite 当前所在的坐标播放的补间。var pathCounter = 0;
testPathText.on('pointerdown', function(){
if (pathCounter % 2 == 0)
{
gamePieceSprite.setX(startTile.x);
gamePieceSprite.setY(startTile.y);
}
else
{
if (levelStartRotation[level] == '1')
{
goLeft.restart();
}
else if (levelStartRotation[level] == '2')
{
goUp.restart();
}
else if (levelStartRotation[level] == '3')
{
goDown.restart();
}
else if (levelStartRotation[level] == '4')
{
goRight.restart();
}
}
pathCounter++;
});
我有什么方法可以更新补间的起点,以便重新启动它不仅仅是从之前开始的地方开始?
最佳答案
我也很沮丧试图解决这个问题(看起来似乎仍然没有解决方案,差不多一年后)。我还没有找到任何方法或最佳实践来这样做,但是通过深入研究 tween 对象,我发现您可以访问 data
数组中的 tween 属性。由于它是一个数组,如果您有多个属性,则必须通过比较它的 key
值来找到该属性。如果您只有一个,只需获取 data[0]
。该属性有一个 start
字段,您可以设置它。
在您的情况下,请尝试:
...
if (levelStartRotation[level] == '1')
{
goLeft.data[0].start = startTile.x;
goLeft.restart();
}
...
关于phaser-framework - Phaser 3 使用更新的起始值重新启动补间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53385011/