移动一个圆圈中的对象 - android

时间:2013-05-29 15:26:41

标签: java android animation bitmap android-canvas

昨天我发布了这个问题,我得到了一些有用的帮助,但无法解决问题。我想我一直在努力。

确定。我试图在Android的画布上将球移动一圈。在做了一些研究并阅读了一些类似的问题后 - 我认为我的逻辑有所下降,但形状仍然保持不变。基本上我做x = a + rcos(theta),y = rain(theta)。我不确定问题是什么。我的代码如下。有谁知道我做错了什么?我已经阅读了其他问题,并且不知道为什么我无法使其发挥作用。

public class DrawingTheBall extends View {

Bitmap bball; 
int x,y, theta;


public DrawingTheBall(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    bball = BitmapFactory.decodeResource(getResources(), R.drawable.blueball);
    x = 0;
    y = 0;
    theta = 45;
}

public void onDraw(Canvas canvas){
    super.onDraw(canvas);

    Rect ourRect = new Rect();
    ourRect.set(0, 0, canvas.getWidth(), canvas.getHeight()/2);
    float a = 10;
    float b = 10;
    float r = 20;

    theta = (int) Math.toRadians(10);


    Paint blue = new Paint();
    blue.setColor(Color.BLUE);
    blue.setStyle(Paint.Style.FILL);

    canvas.drawRect(ourRect, blue);

    if(x < canvas.getWidth()){

        x = (int) (a +r*Math.cos(theta));
    }else{
        x = 0;
    }
    if(y < canvas.getHeight()){

        y = (int) (b +r*Math.sin(theta));
    }else{
        y = 0;
    }
    Paint p = new Paint();
    canvas.drawBitmap(bball, x, y, p);
    invalidate();
}

}

1 个答案:

答案 0 :(得分:3)

你必须在行上增加theta

theta = (int) Math.toRadians(10);

如果你总是以相同的角度绘制,你总是会画到同一个位置。

编辑:

您可以将上述行放在构造函数中,然后在onDraw中,您可以执行以下操作:

theta = (theta + 0.1) % (2 * Math.PI)