1

Android用のBrickBreakerゲームを作成しようとしていますが、X秒ごとにBrickBreakerView(ボール、パドルなどを含む)を更新できるようにしたいと考えています。現在、UIは、ユーザーが画面に触れたときにのみ更新されます。

更新の合間に、パドル、ブリック、ボールのデータを変更し、onDraw()メソッドが呼び出されたときに(UI更新)、データでビューを更新したいと思います。

現在、私はパドルしか持っておらず、ユーザーが画面に触れて指を動かすと、パドルの位置が更新され、invalidate()が呼び出されます。これが私のコードです:

 private Paddle paddle;
private int fingerAdjustor = 75;

public BrickBreakerView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setBackgroundColor(Color.WHITE);
    setOnTouchListener(this);
    setOnClickListener(null);
    paddle = new Paddle(100, 675, 150,25);
    invalidate();
}
@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    if(event.getAction() == MotionEvent.ACTION_MOVE) {
        int x = (int) event.getX();
        paddle.setXPosition(x);
        invalidate();
    }
    return false;
}

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setColor(Color.BLUE);
    canvas.drawRect(paddle.getX()-fingerAdjustor, paddle.getY(), paddle.getX() + paddle.getPaddleWidth()-fingerAdjustor, paddle.getY() + paddle.getPaddleHeight(), paint);

}

これには、ある種のタイマーの使用が含まれますか?いくつか例を挙げたり、これをどのように実装するかを教えていただければ、非常にありがたいです。

4

1 に答える 1

0

onDraw の最後で、すべての描画が終了し、ボールとブロックの位置が変更されたら、invalidate() を再度呼び出して新しい位置を更新します。

于 2012-07-29T02:46:31.673 に答える