0

15x15 のボードにボックスのセットがあります。

タッチイベントをキャッチするイベントリスナーは 1 つしかなく、ユーザーが画面をタップすると、イベントによって指定された座標 (x、y) に最も近いボックスを知る必要があります。

それを取得するためのより良い方法は何ですか?

前もって感謝します。

4

1 に答える 1

0

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

});
于 2012-12-29T17:21:02.063 に答える