2017-03-04 2 views
0

私は自分のVIEWを使って簡単なアンドロイドアニメーションをやっています。私はclassonDraw()メソッドに描画された2つの円をViewクラスに拡張しています。 1つの円はMotionEventを使用してドラッグすると移動し、一方の円は特定の位置で静的です。移動円が静止円の任意の点に接触すると、移動円の色は静止円の色に変わります。例えばAndroidで[View]を使用して、2つの円がそのポイントのいずれかで出会う場合、特定のアクションをトリガーするにはどうすればよいですか?

int_circle_radius= 50; 
int circle1_x = 0; 
int circle1_y = 0; 
int circle2_x = 200; 
int circle2_y = 200; 

Iは、以下の式が、円を用いて試みたのは、円1移動円ドラッグたと仮定し、円2

のある点まで低下させ1の色は、それが本当に2.

if (circle1_x == circle1_x && circle1_y == circle2_y){ 
paint.setColor(Color.RED); 
} 

が、私はここでの問題は、円であることを知っている円の正確な場所に行けば変更それは半径だから多くのポイントを持っていますが、どのようにすることができます円が他のサークルにポイントをタッチすると、特定のアクションがトリガーされますか?ありがとう。

答えて

0

2つの円の中心間の距離を簡単に計算できます。距離が半径の2倍未満の場合、円は交差しています。計算は簡単です。正確なMotionEventを得ることは期待できません。円の距離が2倍の半径と等しいため、距離がそれより小さいか等しいかをチェックする必要があります。

int deltaX = circle1_x - circle2_x; 
int deltaY = circle1_y - circle2_y; 
if(Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)) <= 2 * circle_radius) { 
    paint.setColor(Color.RED); 
} 
関連する問題