【发布时间】:2012-12-29 16:38:57
【问题描述】:
我在 15x15 的板上有一组盒子。
我只有一个监听触摸事件的事件监听器,一旦用户点击屏幕,我需要知道哪个框最接近事件给出的坐标 (x, y)。
有什么更好的方法来获得它?
提前致谢。
【问题讨论】:
标签: actionscript-3 apache-flex flex4.5 flexbuilder
我在 15x15 的板上有一组盒子。
我只有一个监听触摸事件的事件监听器,一旦用户点击屏幕,我需要知道哪个框最接近事件给出的坐标 (x, y)。
有什么更好的方法来获得它?
提前致谢。
【问题讨论】:
标签: actionscript-3 apache-flex flex4.5 flexbuilder
只需取 x 和 y 位置的差值并将它们平方。取最小的 d。
dx = x1 - x2;
dy = y1 - y2;
d = dx^2 + dy^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
});
【讨论】: