图形不稳定

时间:2011-11-03 14:40:38

标签: android performance graphics frame-rate

我试图通过让两个位图滑开来试图转换到我的游戏,就像一个车库门从中间开口,一半向下滑动,一半向上滑动。无论如何,当我这样做时,它看起来非常不稳定,帧速率似乎不稳定/不可靠。我就是这样做的。

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有帮助吗?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我知道你的意思是“波涛汹涌”。即使您有基于时间的动画,即使用

,动画速度也不一致
SystemClock.currentThreadTimeMillis()

波动是由currentThreadTimeMillis()引起的。它“返回在当前线程中运行的毫秒数”。也就是说,当您使用currentThreadTimeMillis()时,“time”仅在当前线程正在运行时过去。但是您的渲染器线程并不总是在运行 - 正如您在多任务环境中所期望的那样。因此,每次线程未运行时,动画也不会“正在运行”(时间不会过去)。

解决方案:使用

SystemClock.elapsedRealtime()

答案 1 :(得分:0)

我不得不承认我在Android中的动画方面并不是最好的,但我认为我会做出贡献。

根据您的解释,您可以使用TranslateAnimation吗?那么你的动画会非常流畅。

据我所知,如果Android提供的动画不够,你应该在一个单独的线程中绘制图形,实现SurfaceView

This may help或者查看Lunar Lander示例。