动画位图球 - 撞墙并改变方向效果

时间:2013-08-23 15:17:48

标签: android

我正在尝试为位图设置动画。我有一个球,然后移动它。当它到达屏幕的边界时,我希望它像镜子效果一样改变它的方向,我的意思是这样,把球看作下面的点,它下来,击中墙壁并改变它的方向。

.          .
 .       .
  .    .
____._._______

这是我的代码:

public class DrawShapes extends View{

Bitmap ball;
int x,y;

public DrawShapes(Context context) {
    super(context);
    ball=BitmapFactory.decodeResource(getResources(),R.drawable.ball);
    x=0;
    y=0;
}

@Override
protected void onDraw(Canvas canvas) {      
    super.onDraw(canvas);       

    if(x<canvas.getWidth())
        x+=5;
    else
        x-=5;
    if(y<canvas.getHeight())
        y+=5;
    else
        y-=5;
    canvas.drawBitmap(ball, x, y, new Paint());
    invalidate();

}

问题是,在球到达边界后,它继续前进并离开屏幕并且永远不会回来。任何人都可以帮我这个吗?

由于

2 个答案:

答案 0 :(得分:1)

嗯...如果画布大于屏幕,那就可以解释为什么它“离开了屏幕。”

并且它不会回来因为你的逻辑在那里,球应该在同一个位置之间来回反弹。这就是我所看到的:

canvas.width == 10

iteration1
x == 5
x += 5
x == 10

iteration2
x == 10
x -= 5
x == 5

iteration3
x == 5
x += 5
x == 10

答案 1 :(得分:1)

在它到达屏幕边缘后,它将移回屏幕一次,但之后x / y将<&lt;再次高度/宽度,使其再次立即离开屏幕。

你应该有一个名为x_direction的变量和y的变量,如果球在边界之外,它会改变(x_direction = -x_direction),然后不会改变直到另一个边界受到了打击。然后根据方向变量每次移动球。希望我解释说好。