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

cocoa - 在 mouseDown 上将子视图置于顶部:并继续接收事件(用于拖动)

好的,基本上我有一个带有一系列稍微重叠的子视图的视图。当一个子视图被点击时,它通过一个非常简单的两条线移动到顶部(除其他外):

这工作正常,似乎是做到这一点的“正常”方式。

问题是我现在在视图中引入了一些拖动逻辑,所以我需要响应-mouseDragged:. 不幸的是,由于视图已从视图层次结构中删除并在此过程中重新添加,因此我不能让视图进入前台并在相同的鼠标操作中被拖动。它接收mouseDown:,但从不接收mouseDragged:或任何后续事件。如果我离开鼠标并再次单击视图,它只会拖动,因为第二次单击不会进行任何视图层次结构的调整。

我能做些什么来让视图像这样移到前台,并继续接收后续事件-mouseDragged:-mouseUp:事件?

我开始考虑在超级视图中覆盖-hitTest:并拦截 mouseDown 事件,以便在视图实际接收到事件之前将其带到前台。这里的问题是,从内部-hitTest:,我如何区分我实际执行命中测试的事件类型?我不想将子视图移动到其他鼠标事件的前台,例如 mouseMoved 等。

更新 | 在我的超级视图中,我实际上已经做到了这一点,但感觉就像是一个非常糟糕的代码气味,-hitTest:直接触发了一个事件。

这有两点感觉不对。最大的是我在执行之前-hitTest:甚至返回之前执行的操作,然后在-hitTest:完成后执行 AppKit 处理的操作。第二个是我没有要传递的事件,所以我传递的是 nil。它在这种情况下有效,因为我知道事件处理程序实际上并不处理任何事件数据,但这并不是很好。另一种方法是将整个逻辑移到超级视图中,但这里的关注点分离感觉更糟。

更新 | 这个-hitTest:黑客被破坏了......当我没有点击鼠标时它会被触发,例如当我将某些东西拖到视图顶部时。仍在寻找解决此问题的好方法。

答案可以从字面上指示视图如何在拖动操作期间离开并重新进入其父视图,或者(也许更优雅)将视图移动到前景的另一种方法,而不是[view removeFromSuperview]; [superview addSubview:view ...];.

0 投票
1 回答
296 浏览

c# - 为什么我可以点击我的表单?

我正在试验并试图弄清楚 DWM 和 Windows Aero。到目前为止,我认为我几乎拥有它,除了一些奇怪的原因,当我点击表单的较厚部分时,我的点击直接穿过它,我不知道如何停止它。

0 投票
2 回答
1250 浏览

flash - hitTestObject 在 MC 的孩子上

我有一个名为“playerP”的 MC,里面有 7 个不同的 MC。我似乎无法对儿童 MC 进行测试,它总是显示 [object position_2]

0 投票
1 回答
2078 浏览

flash - 如何在 Actionscript 3 中获取我正在碰撞的对象?

有没有办法知道一个对象正在与哪个对象发生碰撞?...我想在 Flash 中创建一个“盒子对象”,它可以识别与它碰撞的任何其他对象(电影剪辑)。例如,如果我将盒子放在“场”(引擎或世界)上,然后我在里面放了任何东西,我希望盒子告诉我它正在与什么样的物体发生碰撞。我不能使用 hitTestObject 因为我不知道盒子会提前碰撞到哪个对象。

我想要实现的粗略伪代码如下:

上例中的 UNKNOWN_OBJECT 不一定具有相同的数据类型。

0 投票
1 回答
470 浏览

iphone - 双水平滚动视图触摸问题

我已经处理这个问题好几个星期了,仍然没有解决方案。请帮忙。

我有一个带有图像的大滚动视图。每个图像都是屏幕宽的,并且启用了分页。

在这个滚动视图的底部,我有另一个带有按钮的滚动视图。每个图像的每个按钮。当我按下图像按钮时,大滚动视图跳转到图像。

因为我有很多图像,所以我在小滚动视图上有很多按钮。

现在,大卷轴和小卷轴都可以正常工作,按钮也可以。

我的问题从小卷轴的远端开始。当我在小卷轴的末端(但仍在大卷轴的中间)时,我不希望大卷轴在我将手指移动到死胡同时移动。您可以说我想将小卷轴与大卷轴分开,但仍将他作为子视图(因为我希望它与大卷轴一起移动)。

我已经尝试将小滚动、按钮、覆盖 hitTest 和 touchesBegan/End 子类化,但到目前为止还没有。

我真的很沮丧,因为我的客户要求按照他的方式工作。

我已经用谷歌搜索了很长时间,但我找不到任何东西!

哎呀!

0 投票
1 回答
1033 浏览

python - rect.center 会改变 rect 属性吗?

问候,

看来我在 pygame 中从事的项目有点麻烦。对于我使用的一个对象:

并将其分配给:

我了解 get_rect 函数的默认坐标值是 (0,0)。结果,我使用了:

将精灵大致放置在屏幕中间。但是,稍后在 hitTest 函数中,我想调用:

我收到一个错误:'tuple' 对象没有分配'colliderect'。

发生这种情况是因为 self.rect.center 分配改变了 self.rect 的属性吗?

0 投票
0 回答
454 浏览

objective-c - hitTest 没有在 NSCell 子类中被调用

我正在NSCell为我的项目开发一个子类。

在某些情况下,这个子类NSButtonCell在它的视图上绘制了这个:

没问题。关于绘图,问题是响应点击按钮!

我正在尝试这样做:

和 :

- (BOOL)startTrackingAt:(NSPoint) inView:(NSView *)

- (BOOL)trackMouse:(NSEvent *) inRect:(NSRect) ofView:(NSView *) untilMouseUp:(BOOL)

- (BOOL)continueTracking:(NSPoint) at:(NSPoint) inView:(NSView *)

- (void)stopTracking:(NSPoint) at:(NSPoint) inView:(NSView *) mouseIsUp:(BOOL)

但是 hitTest 或任何其他人永远不会被调用......

+ (BOOL)prefersTrackingUntilMouseUp被调用,这对我没有多大帮助......

任何想法 ?^^

0 投票
1 回答
1147 浏览

wpf - 命中测试图像内容

我想测试图像的内容。为了做到这一点,我使用方法创建BitmapImage并在里面绘制它。当它被命中测试时,使用,图像中的每个点都返回 true,但是我希望白色像素返回 false,非白色像素返回 true。所以我使用转换为黑白像素格式,但它也不起作用。有什么建议么?如果我可以对对象进行测试会更好。 DrawingVisualDrawingContext.DrawImage()VisualTreeHelper.HitTest()BitmapImageFormatConvertedBitmapImageDrawing

0 投票
2 回答
2524 浏览

c# - WinForms 等效于 WPF 的 IsHitTestVisible

我有一个按钮覆盖,它有一个标签作为孩子。我将 MouseEnter 和 Leave 事件附加到按钮控件。

当鼠标进入标签时,按钮的事件被取消(这是自然的)。我的问题是如何在不实际禁用标签的情况下禁用标签的命中测试。

我希望它保留它的颜色,并且我希望它能够改变颜色(例如按钮上的 MouseEnter),但是当鼠标悬停在标签上时,要在按钮上考虑命中测试。

PS:我知道我可以在标签上添加鼠标进入和离开并处理这些情况,但我希望控件是自给自足的,这样如果参数在它之外发生变化(鼠标进入和离开的颜色),控件仍然会功能正常。

0 投票
1 回答
689 浏览

vba - 命中测试和解决 Excel 中自选图形的遮挡问题

我正在使用代码根据使用 VBA 的用户输入在 Excel 中绘制许多自选图形。但是,其中一些形状可能会相互遮挡,因此我想运行第二遍以命中测试哪些形状被遮挡并轻推它们直到它们不再被遮挡。

所以基本的伪代码大纲是:

你们中的任何人都可以想出某种方法来做到这一点(或者甚至可以解决这个问题,因此不必这样做)?

我已经查看了 RangeFrom 函数,但这似乎没有多大用处(仅返回特定屏幕坐标处的一个形状,而不是相交的形状)。

非常感谢您的帮助。