确定被拖动的图像是不是在特定区域内

Posted

技术标签:

【中文标题】确定被拖动的图像是不是在特定区域内【英文标题】:Determine if image being dragged is inside a specific area确定被拖动的图像是否在特定区域内 【发布时间】:2017-02-14 06:32:13 【问题描述】:

我有一个游戏,我正在将顶层上的方形块移动到下面的圆形上方,这些圆形是不可移动的。因此,当块的拖动停止时,我想运行检查或 if 语句以查看我正在移动的块 (myBlocks[objectDragging]) 是否在我的圆中心的 x 像素量内 (myCircles[objectDragging] ])。 objectDragging 只是获取点击图像的标签。可匹配的圆圈将具有相同的标签。一切正常,我只是不知道如何检查我要放置的块(它的中心点)是否在圆中心点的这么多像素内。

我正在使用的一些东西:

var myBlocks = [UIImageView]()
var myCircles = [UIImageView]()

let objectDragging = recognizer.view?.tag

if myBlocks[objectDragging!].center.x == myCircles[objectDragging!].center.x 
        ...
         //this checks for an exact match of center.x where-as I want to check
//if the center.x for myBlocks[objectDragging!] is <= we'll say,
//25, pixels of the myCircles[objectDragging!].center.x

【问题讨论】:

【参考方案1】:

在这里讨论找到两个CGPoints之间的距离:

How to find the distance between two CG points?

根据卢修斯(答案 2)

您可以使用 hypot() 或 hypotf() 函数来计算 斜边。给定两个点 p1 和 p2:

CGFloat distance = hypotf(p1.x - p2.x, p1.y - p2.y);

在您的 myBlocks.center 和 myCircles.center 中为 p1 和 p2 订阅,然后

if distance < 25 
    ...
    

【讨论】:

以上是关于确定被拖动的图像是不是在特定区域内的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL如何判断特定时间点是不是在一个时间区间内

在 Angular 中确定特定区域是不是折叠

确定一个点是不是在一个区域内

如何确定当前位置是不是在 KML 定义的区域内?

AS3 在不规则区域内拖动

确定一个点是不是在球面的一部分内