问题标签 [hittest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
17602 浏览

javascript - 命中测试 SVG 形状?

已实现部分 SVG 规范(Firefox 等)的浏览器免费为我们进行命中测试 - 如果我在 SVG 对象上附加 mousedown 侦听器,只要单击该形状,我就会收到通知。这太棒了,尤其是对于复杂的多边形形状。

我想知道是否有一种方法可以利用此功能进行更多的命中测试。我想知道给定的矩形是否与我的任何 SVG 形状相交。

例如,我将 3 个复杂的多边形添加到我的元素中。现在我想知道矩形 (40, 40, 100, 100) 是否与它们中的任何一个相交。有没有人知道我如何能够使用已经很好的命中测试支持,而不是自己添加所有这些代码?

谢谢

0 投票
1 回答
280 浏览

pixelsense - 来自新 SDK 的“Viewport3DVisual”错误不支持“GeometryHitTestParameters”HitTestParameters?

我是一个在夏天开发 Surface 应用程序的团队的一员。我现在准备对这个应用程序做一些小改动,但是得到了上次运行完全相同的代码时不存在的错误。

错误消息是“GeometryHitTestParameters”HitTestParameters 在“Viewport3DVisual”上不受支持,并且抱怨 VisualTreeHelper 中的某些参数。命中测试()。

代码相同,但工作环境略有不同:

  • 我找不到旧的 SDK,所以我不得不使用 Surface SDK 1.0 SP1。
  • 计算机正在运行 Windows 7

我通过捕获所有异常并忽略它们来运行代码。有谁知道 Surface SDK SP1 是否可能改变了“Viewport3DVisual”的使用方式,或者 SDK 是否抛出了 1.0 中未抛出的异常?

我真的很想知道屏蔽此异常是否会使应用程序像以前那样运行,或者行为的变化是否会在以后出现并适得其反。

0 投票
1 回答
2433 浏览

mouseover - 将鼠标 X 和 Y 转换为 3D 模型坐标

我正在构建一个简单的 3D 拖放界面进行处理,并希望检测鼠标何时滑过一个对象。我想我需要对 3D 模型坐标进行一些矩阵转换,以将它们放入屏幕空间等等......

我有这个工作的简单版本,问题是当相机在场景中移动时,我得到的坐标会变得混乱。

那么如何将平铺坐标转换为屏幕空间(因为 screenX 和 screenY 无法正常工作)?

更新: 我最终从处理站点中找到了两个关于如何执行此操作的示例。感谢villintehaspam

http://processing.org/hacks/hacks:picking

0 投票
1 回答
1732 浏览

iphone - 如何确定 UIView 是否具有符合协议的委托

我已经编写了一个自定义类,该类在它自己的视图边界之外显着依赖于触摸拖动/定位。有一个用各种相关方法定义的相关协议。使用这个协议的一个例子是一个视图,它允许从我的自定义类中将东西放入其中。

我遇到的问题是弄清楚触摸何时结束(对象被“丢弃”),是否有一个对象在该位置下方关心。(对于“关心”,请阅读“符合协议”!)。

如果它是一个符合我的协议的视图,那很容易,我可以使用- (CALayer *)hitTest:(CGPoint)thePoint或类似的东西找到它并使用conformsToProtocol:@protocol(xx).

但是,如果它是 UIViewController 的子视图(例如),则该视图不符合协议,即使 UIViewController(因为它是委托)符合协议。如果视图确实想收到通知,我需要能够弄清楚它的委托是谁,以便发送消息。

所以,本质上,我如何从最低的 UIView 向上遍历视图层次结构,询问每个视图是否符合我的协议;如果没有,它是否有代表,并且符合..?

或者有没有我没有想到的更简单的方法?

非常感谢..


解决了

感谢moshy,我有一个解决方案:

这要么返回视图,要么返回nil任何内容。

再次感谢..

0 投票
1 回答
1422 浏览

actionscript-3 - AS3:显示对象 x、y 的点?

现在我有一点,我必须用显示对象的 x 和 y 更新才能与 hitTestPoint 对象一起使用;有什么方法可以从显示对象中获取一个点,而不必创建一个新的点 var 并不断更新它的 x 和 y?

0 投票
1 回答
1402 浏览

iphone - iPhone hitTest 旋转后损坏

我有一个 UIView 包含许多 CALayer 子类。我正在使用以下代码来检测触摸事件对应于哪一层:

在设备旋转之前,这可以正常工作。当设备旋转时,所有当前层都从超层中移除,并创建新的 CALayers 以适应新的方向。新图层已正确插入并可按正确方向查看。

旋转后,hitTest 方法始终为图层返回 null。我注意到,当旋转 180 度时,返回的图层是旋转前位于该位置的图层,即触摸左上角的图层会在旋转 180 度时在右下角的图层。命中测试的坐标按预期打印,左上角为 (0,0)。我在每次旋转时重新绘制图层,但由于某种原因,它们似乎被映射为“正确”的向上方式,底部有主页按钮。处理旋转后我是否错过了函数调用或其他内容?

干杯,亚当

0 投票
1 回答
850 浏览

apache-flex - 防止 Flex 中重叠的 DragDrop 图像

我试图在 Flex Builder 3 中创建一个基本的拼图。我将数组中的图像显示到画布上,可以在画布周围拖放。我的问题是我不希望图像能够相互重叠。关于如何防止这种情况的任何想法?

它们可以在您拖动时重叠,但在放下时不会重叠,它们需要“捕捉”到尚未被另一个图像占据的最近点。

0 投票
4 回答
567 浏览

java - 哪种模式适合需要服务器验证的游戏中的子弹命中测试?

我想设计一个在客户端和 Java 套接字服务器中使用 Flash 的 PvP 游戏,但我确实需要服务器验证轨迹以及子弹是否因作弊而击中目标。

是否有任何教程或论文提供如何做到这一点?

0 投票
3 回答
1659 浏览

wpf - WPF:OnRender 和命中测试

当使用 OnRender 在屏幕上绘制某些东西时,有什么方法可以对绘制的图形进行命中测试?

示例代码

显然,没有参考执行命中测试所必需的绘制的 Rectangle 还是我错了?我知道我可以使用 DrawingVisual,我只是好奇我的理解是否正确,使用 OnRender 绘制的东西你不能对绘制的东西执行任何命中测试?

0 投票
1 回答
1139 浏览

firefox - Firefox 3.6 命中测试重叠 SVG 形状

我正在绘制 2 条 SVG 路径,就像 Google Maps 对方向所做的那样。

我遇到的问题是,与第二条路径的边界框重叠的第一条路径的部分不会触发 mouseover、mouseout 或 click 事件。即使事件处理程序位于路径 dom 元素上,当鼠标位于路径边界框内的任何位置时,事件似乎也会触发。

有没有办法避免这种情况?在 Chrome、Safari 和 Opera 上我没有这个问题。它只是 Firefox 中的 SVG。

我创建了一个测试示例。当您将鼠标移到一个圆圈上时,它应该会提醒您它的颜色。您会看到,如果您从最右侧接近绿色圆圈,它会起作用,因为它位于红色圆圈容器的 300 像素宽度之外。但是,如果您从绿色圆圈的顶部或底部接近,您将一无所获。现在在 Chrome/Safari/Opera 中尝试相同的操作,您会看到它按预期工作。