15x15 のボードにボックスのセットがあります。
タッチイベントをキャッチするイベントリスナーは 1 つしかなく、ユーザーが画面をタップすると、イベントによって指定された座標 (x、y) に最も近いボックスを知る必要があります。
それを取得するためのより良い方法は何ですか?
前もって感謝します。
15x15 のボードにボックスのセットがあります。
タッチイベントをキャッチするイベントリスナーは 1 つしかなく、ユーザーが画面をタップすると、イベントによって指定された座標 (x、y) に最も近いボックスを知る必要があります。
それを取得するためのより良い方法は何ですか?
前もって感謝します。
x と y の位置の差を取り、それらを 2 乗します。すべての中で最小のdを取ります。
dx = x1 - x2;
dy = y1 - y2;
d = dx^2 + dy^2;
2 つの x と y は、ボックスと現在のタッチ ポイント (使用.localX
と.localY
プロパティ) になります。
これはおそらく必要なものがすべて含まれているサンプルコードです。
board.addEventListener(TouchEvent.TOUCH_TAP,function(e) {
var minVal:int = int.MAX_VALUE;
var minBox:Sprite = null;
for(var i=0; i<board.numChildren; i++) {
var box:Sprite = board.getChildAt(i);
var d:int = Math.pow(box.x-e.localX ,2) + Math.pow(box.y-e.localY,2);
if(minVal > d) {minVal = d; minBox = box; }
}
// You have the minimum value & closest box reference here
});