我试图通过使两个位图分开滑动来过渡到游戏中,就像一个车库门从中间打开,一半向下和向上一半滑动。无论如何,当我这样做时,它看起来确实很断断续续,并且帧频似乎不稳定/不可靠。这就是我的做法。
public class TFView extends View{
...
public void startlevel(Canvas c){
long l =(SystemClock.currentThreadTimeMillis()-starttime)/3;//*(height/500);
if(l<1000){
c.drawBitmap(metalbottom,0,height/2+l,p);
c.drawBitmap(metaltop,0,0-l,p);}
}
public void endlevel(Canvas c){
long l =(SystemClock.currentThreadTimeMillis()-failtime)/3;
if(l>=height/2){
c.drawBitmap(metaltop, 0, 0, p);
c.drawBitmap(metalbottom, 0,height/2 , p);
}
else{
c.drawBitmap(metalbottom,0,-height/2+l,p);
c.drawBitmap(metaltop,0,height-l,p);}
}}
我分别设置了我想打开/关闭门的时间。那么,您认为我应该进行哪些更改以使其过渡更加平稳?将其转换为Surfaceview是否有帮助?
最佳答案
我有同样的问题。我知道您所说的“波涛汹涌”是什么意思。即使您有基于时间的动画,即您正在使用动画,动画速度也不一致
SystemClock.currentThreadTimeMillis()
断断续续是由currentThreadTimeMillis()引起的。它“返回在当前线程中运行的毫秒数”。也就是说,当您使用currentThreadTimeMillis()时,“时间”仅在当前线程为RUNNING时经过。但是渲染器线程始终不会运行-正如您在多任务环境中所期望的那样。因此,每次线程未运行时,动画也不会“运行”(时间没有流逝)。
解决方案:使用
SystemClock.elapsedRealtime()