1

我正在尝试为 Android 编写 BrickBreaker 游戏,并且我希望能够每 X 秒更新我的 BrickBreakerView(包含球、桨等)。目前,UI 仅在用户触摸屏幕时更新。

在更新之间,我将更改桨、砖和球的数据,当调用 onDraw() 方法(UI 更新)时,我想用数据更新视图。

目前,我只有一个 paddle,当用户触摸屏幕并移动手指时,paddle 的位置会更新,并调用 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 回答