我有一个精灵网格。 现在我想拖动一个网格元素的图像。 因此我需要知道网格元素的哪个x/y是最接近鼠标位置的点。 所有的网格元素都存储在一个数组中。 我该如何做到这一点?找到最接近鼠标位置的点
0
A
回答
0
如果你所需要的只是最接近的网格的x,y,那么你所要做的就是。
var gridX:int = Math.floor(mouseX/NumberOfColumns);
var gridY:int = Math.floor(mouseY/NumberOfRows);
这会将您的鼠标坐标转换为您的网格坐标。
现在问题来了。如果您将它们存储在二维数组中,那么如果将它们存储在一个平面数组(1d)中,则需要查看它,就像创建它一样。
var myObject:Object = my2dArray[gridX, gridY];
var myObject:Object = myFlatArray[(gridX * NumberOfRows) + gridY];
如果你照顾你如何创建阵列,并且在推的项目,应该找回的东西,而搜索是没有问题的。
2
您必须遍历所有元素并找到与鼠标最小的距离。然后存储元素的数组索引。尝试是这样的:
// Setup variables outside of loop.
var mousePoint:Point = new Point(mouseX, mouseY);
var elementPoint:Point = new Point();
var element:Sprite;
var closestIndex:uint = 0;
var closestDist:Number;
// Loop through elements
for (var i:int = 0; i < gridElements.length; i++)
{
element = gridElements[i] as Sprite;
// Set the elementPoint's x and y rather than creating a new Point object.
elementPoint.x = element.x;
elementPoint.y = element.y;
// Find distance from mouse to element.
var dist:Number = Point.distance(mousePoint, elementPoint);
// Update closestIndex and closestDist if it's the closest.
if (i == 0 || dist < closestDist)
{
closestDist = dist;
closestIndex = i;
}
}
// Can now use closestIndex to get the element from the array.
trace('The closest element is at index', closestIndex, ', with a distance of', closestDist);
当然,这样只会让你的第一个最接近的元素,所以你必须决定你想,如果有两个元素相等的距离发生了什么。
您还需要考虑元素的起源。将可能有起源设置在那里左上角,所以你需要允许这个在你的距离计算。
您还可以检查最小距离。所以如果用户拖拽太远离任何元素,则什么也不做。
+0
感谢这个解决方案,其中一个,使用hittestObject对我来说更容易一些。 – algro 2011-05-29 22:24:42
相关问题
- 1. LiveCharts标记最近点到鼠标
- 2. 使用javascript/jQuery查找与鼠标位置最接近的网格坐标
- 3. 找到距离原点最近的位置
- 4. 从用户找到最近点坐标
- 5. 找到位置上最接近格到另一个
- 6. 如何从当前鼠标位置获得最近的锚鼠标移动
- 7. 如何找到我附近的最近的10个位置
- 8. 找到每个点的最近点(最近的邻居)
- 9. 如何找到鼠标按钮'点击'位置x和y?
- 10. 寻找到指定点的最近点
- 11. 找到另一个点的最近点
- 12. SQL Server:查找最近的位置
- 13. 查找STRtree中的最近位置
- 14. 使用CLLocationManager查找最近的位置
- 15. 线上两个最近点的位置
- 16. Python,从角色位置到鼠标位置的鼠标位置拍摄
- 17. 寻找附近的位置或地标
- 18. 点击一个链接,并找到最接近的元素
- 19. Python。返回当前光标位置和位置最后一次鼠标点击
- 20. 找到最近点(几何点)
- 21. 查找最近点
- 22. 查找JFrame之外的鼠标位置?
- 23. 寻找距离鼠标最近的对象坐标
- 24. 鼠标位置()
- 25. 查找离我目前GPS位置最近的坐标
- 26. 从现有坐标查找最近的位置mapkit
- 27. Google maps api v2 - 在地图上找到最近/最近的标记/点数?
- 28. 按特定距离查找距离目标位置最近的位置
- 29. D3js找到圆上最近的点
- 30. 如何使用geodjango从用户位置查找最近点?
最后,我用hittest来检测droptarget。我无法直接使用鼠标X,因为网格也是缩放的,因此鼠标X不再对应网格坐标,因为无论如何这个简单的解决方案。 – algro 2011-05-29 22:21:38