サークルを描いているSurfaceViewがあります。私は円の位置と半径を知っています。Android:指のいずれかで領域が押されているかどうかを検出します。
ユーザーが円を押しているかどうかを知る必要があります。ユーザは、1本または2本の指で画面をタップしている可能性があります。指のいずれかが円の領域上にある場合は、それを押す必要があります。
ユーザーが画面から指を上げ、指の指がなくなると、円は押されなくてはなりません。
ユーザーが画面に指が1つしかないときは問題はありませんが、2本の指を使用しているときは問題を解決できません。
問題は、ACTION_UPまたはACTION_POINTER_UPアクションを受け取ったときに、どのポインタが画面に表示されなくなったかわからないため、座標が円を超えているかどうかを調べる必要がないことです。私は成功せず、いくつかの試みを行ってきた
、最後のものは次のとおりです。protected boolean checkPressed(MotionEvent event) {
ColourTouchWorld w = (ColourTouchWorld)gameWorld;
int actionMasked = event.getActionMasked();
for (int i = 0; i < event.getPointerCount(); i++) {
if (i == 0 && (actionMasked == MotionEvent.ACTION_UP || actionMasked == MotionEvent.ACTION_POINTER_UP)) {
// the pointer with index 0 is no longer on screen,
// so the circle is not pressed by this pointer, even if
// it's coordinates are over the area of the circle
continue;
}
if (isPointInCicle(event.getX(i)), event.getY(i))) {
return true;
}
}
return false;
}
任意のアイデア?ありがとうございました。
ええ、それは素晴らしいです!私は受け取ったアクションがインデックス0でポインタを参照したと仮定していた。私は間違っていた、私はACTION_POINTER_INDEX_MASKを使用する必要があります。 – GaRRaPeTa