【问题标题】:Querying if component is in a position X, Y查询组件是否在位置 X, Y
【发布时间】:2012-12-29 16:38:57
【问题描述】:

我在 15x15 的板上有一组盒子。

我只有一个监听触摸事件的事件监听器,一旦用户点击屏幕,我需要知道哪个框最接近事件给出的坐标 (x, y)。

有什么更好的方法来获得它?

提前致谢。

【问题讨论】:

    标签: actionscript-3 apache-flex flex4.5 flexbuilder


    【解决方案1】:

    只需取 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
    
    });
    

    【讨论】:

    • 嗨 Loxxy,干得好。谢谢。问题是每个对象或框都有一个区域,并且您的公式基于每个框的左上角 (x,y),因此在许多情况下,即使您在另一个框,结果也可以选择一个框。尽管如此,这是一个很好的起点。
    • NP :)...顺便说一句,这取决于盒子的初始化位置(x,y),我通常在中心点进行。
    • 是的,我就是这么想的!
    猜你喜欢
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2016-05-06
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多