我有4个可重复使用的补间,应该将目标相对于其当前位置移动。
每个基本与本示例相同,但对于每个基本方向:
goLeft = this.tweens.add({
targets: gamePieceSprite,
x: {value: '-=64'},
duration: 1000,
paused: true
});
由于我希望能够多次使用这些补间,因此我使用了restart()
方法,我想从小精灵的当前位置播放补间,但是即使我更改了小精灵的位置,当我调用该函数以重新启动补间时,它将从第一次播放的坐标开始播放,而不是从当前目标精灵所在的坐标开始播放。
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++;
});
我是否可以通过任何方式更新补间的起点,以便重新启动它不只是从之前的起点开始?
答案 0 :(得分:0)
尝试解决这个问题也让我感到沮丧(大约一年后,似乎仍然没有解决方案)。我还没有找到实现此目的的任何方法或最佳实践,但是通过挖掘补间对象,我发现您可以在其data
数组中访问补间的属性。由于它是一个数组,因此如果您有多个属性,则必须通过比较其key
值来查找属性。如果只有一个,只需获取data[0]
。该属性具有一个您可以设置的start
字段。
根据您的情况,尝试:
...
if (levelStartRotation[level] == '1')
{
goLeft.data[0].start = startTile.x;
goLeft.restart();
}
...