问题标签 [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 投票
1 回答
521 浏览

silverlight - 有没有办法对禁用的控件进行测试?

我试图检测鼠标光标下的控件,无论控件是否启用。

VisualTreeHelper.FindElementsInHostCoordinates忽略其IsEnabled属性设置为的控件false。有没有办法改变这种行为,或者有什么其他方法可以在特定的屏幕位置找到控件?

谢谢。

0 投票
1 回答
900 浏览

flash - 动态放置的 MovieClip 实例上的 hitTestObject

尝试对动态放置在舞台上的实例执行 hitTestObject。

收到错误:

动作脚本:

0 投票
1 回答
1099 浏览

flash - 如何在舞台上动态放置的多个实例上使用 hitTestObject?(AS3)

通过库中的链接放置多个 MovieClip 实例,有人知道如何在这些实例上应用 hitTestObject 吗?

我正在 AS3 中创建一个吃豆人风格的 Flash 游戏。如果有人知道可能有用的好教程,请随时告诉我。

0 投票
1 回答
489 浏览

silverlight - 如何在 Silverlight TextBlock 中点击测试单个字符

这是一个稍微抽象的问题,对此我深表歉意。我不一定要寻找经过测试的特定解决方案,而是可以尝试一些建议以找到最有效的解决方案。欢迎所有建议 - 越多样化和创造性越好。

这是问题所在:

我有一个TextBlock包含一段环绕文本的 Silverlight。它可能包含应用了多种格式的多次运行,包括多种字体大小。它可以左对齐、右对齐、居中对齐或对齐,并且可能包含使用从右到左文本流的运行。我需要能够检测到鼠标指针下的字符。在 WPF 中,我可以使用该方法轻松解决此问题GetPositionFromPoint,但由于 Silverlight 中不存在此方法,因此我需要一个创造性的解决方法。

我尝试过的一种方法取得了相当大的成功,是将文本分解成单个单词并TextBlock为每个单词创建一个。通过将它们呈现在 a 中,WrapPanel我可以识别每个单词的起始位置,从而缩小命中测试区域。找到实际的目标字符就是逐个字符地构建目标单词,直到它的宽度满足鼠标位置。

虽然我的实验技术有效,但它有两个缺点。首先是性能,因为TextBlockWrapPanel. 第二个问题是我的换行算法(粗略地基于空格和连字符)可能TextBlock与 UI 中使用的实际使用的算法不完全匹配。刚刚阅读了Unicode Line Breaking Algorithm,我意识到这本身就是一个完整的主题。我不想冒在某些段落内容条件下破坏设计的风险

理想情况下,我希望找到一种可以让我直接针对 main 进行测量的技术TextBlock,但我欢迎任何创新的建议,无论它们看起来多么奇怪。

非常感谢,蒂姆

0 投票
3 回答
10068 浏览

wpf - WPF UserControl HitTest

I have the following user control: a dot and its name:

This is cool.

Now, I have a panel, in witch I need to recuperate my StopPoints that I hit with the Mouse:

So, as you can see, the problem that the HitTest never identifies an UserControl(StopPoint) as it is, but rather its components(TextBlock, Ellipse or even Border).
As I associate the business object to the StopPoint element, I need to obtain it when MouseHitting, and not its composing elements.

Is there a way to do it?

EDIT:

Using filter (now, it does not enter at all in the HitTestCallback):

0 投票
1 回答
1044 浏览

wpf - IsMouseOver 在 ContextMenu 或验证错误时返回 False?

我有一个控件,当 IsMouseOver 使用触发器设置为 true 时,它​​会扩展。在该控件中,有一些文本框具有一些基本验证。我的问题是,当发生验证错误并且用户将鼠标悬停在文本框周围的红色边框上时(几乎保证在用户将鼠标移动到文本框的中心以更改值时发生), IsMouseOver 设置为 false 并且控件关闭.

文本框的验证错误:

触发以显示控制:

更新: 当我右键单击文本框并打开上下文菜单时,IsMouseOver 也设置为 False

0 投票
2 回答
1497 浏览

iphone - CALayer -hitTest:不尊重 containsPoint:重载

再次返回并使用我之前发布的相同功能提出不同的问题:

我有一个炸弹,用户将其拖到敌人的上方,使其直接显示在 AIEnemyUnit 上方。对于这个炸弹,我实现了 CALayer-containsPoint:在拖动过程中返回 NO 以允许 -hitTest: 穿过层。基本上,只要我只使用 CGImageRef 上下文,这种类型的命中测试就可以很好地处理这些“传递”层。然而,一旦我开始为炸弹添加额外效果的子层,我就 -hitTest:立即崩溃了。很明显,新层正在捕获-hitTest:. 我尝试通过重载-containsPoint:这些层来实现相同的技术,但它仍然返回炸弹的通用 CALayer 子类,而不是通过。

有没有更好的办法?

0 投票
1 回答
1169 浏览

actionscript-3 - BitmapData.draw() 矩阵问题

我遇到了一个问题,即 BitmapData.draw() 方法不能准确地从使用透明度的 .png 中减去图像数据。

我整理了一个显示这种行为的测试文件,它位于: http ://www.filedropper.com/shield_1

简而言之,一个精灵从屏幕顶部掉落,当它与屏幕底部的精灵相交时,掉落的精灵会取出底部的一部分精灵。我已经完成了所有这些工作,除了当我在精灵与底部精灵相交后重置精灵的 x 和 y 位置并再次与底部精灵相交时,它不会从精灵中取出相同大小的块底部。

如果我解释得不够好,我很抱歉。如果您花一点时间看一下我发布的文件,那将是有意义的。

下面的代码需要库中的两个 png 文件,其 Linkage 值为 ShieldBase 和 SnowBall。

我认为问题在于 hitTest 和/或 BitmapData.draw() 没有按预期工作。

非常感谢,

德文

0 投票
1 回答
528 浏览

silverlight - 在 Silverlight 中的图像中只有非透明像素命中可测试的最佳方法是什么?

根据 Silverlight 中的 msdn,图像可以在其图像/媒体显示区域(基本上是其高度和宽度)上进行命中测试。图像文件中的透明/完整 Alpha 像素仍然可以命中测试。我现在的问题是,在 Silverlight 中的图像中只有非透明像素命中可测试的最佳方法是什么?

0 投票
3 回答
3691 浏览

iphone - hitTest 返回错误的 UIView

我有一个视图层次结构,其中包含滚动视图上的较小视图。每个视图都可以有子视图,例如按钮等。

出于某种原因,视图上的按钮没有被点击;进一步探索表明,当滚动视图接收到 touchBegan 事件时,按钮没有。调用 hitTest:event: 消息显示按钮未返回,即使它在限制范围内。

我已经包含了一个日志输出,描述了滚动视图上的触摸位置、从 hitTest 返回的项目、如果我调用 locationInView 时的触摸位置:使用预期项目,以及预期项目的层次结构(打印帧)。从这个输出我可以推断该按钮应该被调用......

谁能解释一下?我错过了什么吗?

更新:除了UIWindowVCViewsContainerView 之外,所有视图都是使用initWithFrame:或在按钮的情况下buttonWithType:以编程方式创建的。VCViewContainer 使用CGRectZero初始化,当UIImageView创建时,它的框架设置为图像的大小 + 底部标签的额外空间。

更新 2:当使用相同位置调用[self.layer hitTest:location]时,我得到了正确视图的图层!这里发生了什么...?