Android 2d图形帧率

时间:2015-08-12 20:23:50

标签: android graphics android-canvas

我正在为我正在撰写的计划提供帮助。

代码基本上是数组中单词的列表,在某些索引处将其切换为特定的字符串,然后进入Chars并将其显示在画布中。

然后,在向下滑动画布时,字符会动画。

但是,每当它动画缓慢时,角色就会彼此重叠,只要动画速度很快,角色就会分开。

如何在慢慢制作动画的同时将字符分开? 我想出的一个解决方案是找到一种编辑帧速率的方法,但我不知道该怎么做:(。

 public sketchUp(Context context) {
        super(context);
    }
String arr [] = {"love","happiness"};
    protected void onDraw (Canvas canvas){
super.onDraw(canvas);
        Rect disRect = new Rect();
      disRect.set(0,0, canvas.getWidth(), canvas.getHeight()/2);
        Paint col = new Paint();
        Paint txt = new Paint();
        txt.setTextSize(20);
        txt.setColor(Color.BLACK);
        col.setColor(Color.GREEN);
        col.setStyle(Paint.Style.FILL);
        canvas.drawRect(disRect, col);

        if(y<canvas.getHeight()/2){
            y+=1;
        }
       else{
            y=0;
        }
//       if(x<canvas.getWidth()){
//            x+=10;
//        }
//        else{
//           x=0;
//       }
   for(int i=0; i<arr.length; i++){

    for(int j=0; j<arr[i].length(); j++){
        char result = arr[i].charAt(j);
//        System.out.println(result);
    canvas.drawText(String.valueOf(result), x, y+=0.5, txt);
//

    }
   }

invalidate();

    }

1 个答案:

答案 0 :(得分:0)

这样想:

y+=0.5设置字符的分隔。这是使每个角色的位置不同的唯一因素。如果它只是y,则字符将在彼此之上。

为什么它影响动画速度

每个y+=0.5都会更改y。因此,在绘制后,y字符比之前更低。

如何解决此问题

首先,你必须决定y应该是什么。你应该重命名它,所以你要记住它是什么。例如,它可能会成为firstCharacterY

显然,绘制字符时第一个字符y不应该改变,但是应该改变每个帧。要修复绘图部分,您可以在循环之前设置y = firstCharacterY - 0.5,也可以在每次迭代时从i和j计算y。