Android ::创建一个可拖动的弹性球?

时间:2010-07-19 03:09:50

标签: java android animation physics

我创建了一个加载小球图像的自定义视图。这样onDraw方法看起来像这样:

public void onDraw(Canvas canvas) {
    canvas.drawBitmap(...);
}

后来,我添加了一个onTouch监听器,以便能够监听触摸事件以使球能够被拖动。

public boolean onTouchEvent(MotionEvent event) { 
        int eventaction = event.getAction(); 

        int X = (int)event.getX(); 
        int Y = (int)event.getY(); 

        switch (eventaction ) { 

        case MotionEvent.ACTION_MOVE:   // touch drag with the ball 
            // move the balls the same as the finger 
            ball.setX(X-25); 
            ball.setY(Y-25); 

            break; 
        } 
        // redraw the canvas 
        invalidate(); 
        return true; 
    } 

现在,我试图让球沿曲线移动,如果它没有移动到一个固定点,让它回到原来的位置。所以我目前面临两个问题:

  1. 修复球的移动路径
  2. 通过制作动画将它扔回来。 我观察的一个问题是,如果我 使用ball.startAnimation,如果 球略微失焦, 球出现了切片。
  3. Ball Swing http://www.freeimagehosting.net/uploads/b68d5434ed.png

    有什么建议吗?

1 个答案:

答案 0 :(得分:0)

曲线似乎是圆的一部分,表明它具有中心和半径。

我建议确定这些是什么,然后编写一个函数,给定手指位置,返回球沿曲线的位置。这仅需要确定手指与圆心相比的角度,然后使用该角度使用基本三角法正确定位球。

例如,在你的照片中,球是0°,标记看起来是大约20°。

然后你可以确定当手指超过某个点时球应该回到什么角度(再次,从圆圈的中心角度描述)