在特定时间内将精灵从A点移动到B点

时间:2016-04-17 07:56:16

标签: java android oop

在我的应用程序中有一个功能,您可以设置精灵在后续动画中的运行方式,此功能看起来或多或少是这样的:

enter image description here

在最终动画中,精灵总是首先移动到第1点,而不是从1移动到2,移动到2到3 ......等等。您还可以设置精灵从一个点移动到另一个点的时间。

最后一个动画由一个计时器运行,因此每个15毫秒的精灵在X方向上由partialMoveX移动,在Y方向上由partialMoveY移动。

int wholeMoveX = followingPointX-currentPointX; int partialMoveX = wholeMoveX/(specifiedTime/15); int wholeMoveY = followingPointY-currentPointY; int partialMoveY = wholeMoveY/(specifiedTime/15);

但问题是,可能是因为周RAM,定时器滞后,15毫秒突然变为让我们说80毫秒,所以精灵的移动明显慢于应有的速度。

请帮帮我。精灵怎么能在我想要的时间点到点移动?

我已经想到它可以,而不是总是通过particalMoves移动,每15毫秒计算精灵所在的位置和下一点之间的空间,并将它与已经使用的时间相关联,像这样:

int wholeMoveX = followingPointX-spriteX; int remainingTime = specifiedTime+theTimeItSetOff-currentTime; int thisTimesMoveX = wholeMoveX/(remainingTime/15); spriteX = spriteX + thisTimesMoveX;

,这样可行,但问题是在这种情况下,精灵开始变慢并在接近下一个点时加速。此外,精灵永远不会完全移动到该点,它总是在下一个点和它自身之间留下一点间隙。

你知道如何妥善解决这个问题吗?

0 个答案:

没有答案