在我的应用程序中有一个功能,您可以设置精灵在后续动画中的运行方式,此功能看起来或多或少是这样的:
在最终动画中,精灵总是首先移动到第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;
,这样可行,但问题是在这种情况下,精灵开始变慢并在接近下一个点时加速。此外,精灵永远不会完全移动到该点,它总是在下一个点和它自身之间留下一点间隙。
你知道如何妥善解决这个问题吗?