-3

我有一个圆形类,它有一个绘图功能,,,我有一个视图类,它创建了 3 个具有 3 种不同颜色的圆圈,我在屏幕上成功绘制了圆圈,左边 1,中间 1,,中间 1正确的位置...圆圈的高度几乎相同,有小的不同...

    O 
  O
O

想象一下 3 个球,但高度更小(当球向左或向右移动时,它们相交)。现在我的问题是,我试图将右上角的球移到左角,同时将左下角的球移到右上角,我看到它们都出现在上面中间球,但我想要的是顶部球出现在中间球后面,最后一个球出现在中间球上方,就像现在一样,我怎么能做到这一点?

编辑:::

public class picture {
private Bitmap bitmapPicture;   // the actual bitmap
private int x;          // the X coordinate
private int y;          // the Y coordinate

        ...


public void draw(Canvas canvas,Paint paint) {
    canvas.drawBitmap(bitmapPicture, x , y , paint);

    }
some functions to move it to the right,, and left...
.....
}

我的视图类:

public class GamePanel extends View implements Runnable{
    private Picture[] picture;
       .....

      protected void onDraw(Canvas canvas) {
      super.onDraw(canvas);
      Paint paint = new Paint();
      for(int i=0;i<cupsNumber;i++){
         cup[i].draw(canvas,paint);
      }
        invalidate();
    }

}

现在在我的视图类中,我激活了将 i=0 上的图片向右移动,i=2 上的图片向左移动的功能,(i=0 在右上角,i=2 在左下角)现在它们都与中间图片相交但没有完全隐藏它,所以在中间宽度,我可以看到所有图片,现在我的问题是,我看到球向左移动中间球和中间球顶部向右移动的球(有时是随机的,就像它们都在中间后面等)我想要的是,顶部的球出现在球的后面中间,最后的球出现在中间的球上方,我该怎么做?

4

1 回答 1

0

您可能需要自己管理位图。

View您用来绘制位图的类实际上应该是overridesView的子类onDraw()。例子:

public class myCircleDrawer extends View {
     Bitmap circle1, circle2, circle3;

     @Override
     public void onDraw(canvas c) {
           c.drawBitmap(bitmap1);
     }
}

尝试阅读Canvas文档以了解用于更改位图 (x,y) 坐标的方法,以便您可以移动它们

编辑:

好的,现在我明白了,如果你想做的是一个游戏,我建议你看看SurfaceViewSurfaceView.Renderer. 这背后的原因是您需要自己管理对draw()函数的调用,而不是覆盖onDraw(); 所有这一切都在您更新实体属性之后。

于 2013-09-25T20:55:49.980 回答