0

昨日この質問を投稿しました。役に立つ助けがありましたが、問題を解決できませんでした。がんばろうと思っただけです。

Ok。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();
}

}

4

1 に答える 1

3

theta次の行をインクリメントする必要があります。

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

いつも同じ角度で描くと、いつも同じ場所に描くことになります。

編集:

上記の行をコンストラクターに配置すると、onDrawで次のことができます。

theta = (theta + 0.1) % (2 * Math.PI)
于 2013-05-29T15:32:38.467 に答える