gpt4 book ai didi

java - 绕圈移动物体 - android

转载 作者:行者123 更新时间:2023-12-01 23:47:22 26 4
gpt4 key购买 nike

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

好的。我正在尝试让球在 Android 的 Canvas 上绕圈移动。在做了一些研究并阅读了一些类似的问题之后 - 我想我已经理解了逻辑,但形状仍然静止。基本上我正在做 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();
}

}

最佳答案

您必须增加行上的theta:

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

如果您始终以相同的角度绘制,则您将始终绘制到相同的位置。

编辑:

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

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

关于java - 绕圈移动物体 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16817999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com