- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 SceneKit SCNView
,我想在上面附加一个平移手势识别器。这将执行一个 hitTest
来确定用户是否触摸了我场景中的特定对象。但是,如果此点击测试失败(用户没有特别触摸任何东西),那么我想将该触摸传递给默认相机 Controller 。
目前,添加我自己的平移手势识别器似乎会覆盖默认相机 Controller 并阻止其工作。
let scnView = SCNView()
// Configure scnView with my geometry etc
// ...
let panGesture = UIPanGestureRecognizer(target: context.coordinator,
action: #selector(panned))
scnView.addGestureRecognizer(panGesture)
scnView.allowsCameraControl = true
目前我的手势识别器是这样开始的:
@objc func panned(gesture: UIPanGestureRecognizer) {
let sceneView : SCNView = gesture.view as! SCNView
let point = gesture.location(in: sceneView)
switch gesture.state {
case .began:
guard let hitNodeResult = sceneView.hitTest(point, options: [:]).first else { return }
// Rather than just 'return' I suspect I want to do something here...
// ....
}
最佳答案
三件事最终帮助我解决了这个问题:
首先,我必须在我自己的平移手势上添加一个手势识别器委托(delegate):
myPanGesture.delegate = self
像这样的委托(delegate)方法:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true;
}
接下来我找到了控制相机的内置平移手势识别器,并告诉它需要我的平移手势失败才能起作用:
let panGestures = scnView.gestureRecognizers!.filter { $0 is UIPanGestureRecognizer } as! [UIPanGestureRecognizer]
if (!panGestures.isEmpty) {
let cameraPanGesture = panGestures.first!
cameraPanGesture.require(toFail: myPanGesture)
}
@objc func panned(gesture: UIPanGestureRecognizer) {
let sceneView : SCNView = gesture.view as! SCNView
let point = gesture.location(in: sceneView)
switch gesture.state {
case .began:
guard let hitNodeResult = sceneView.hitTest(point, options: [:]).first else {
// Cancel the gesture so that the camera pan kicks in
gesture.state = .failed
return
}
// .....
然后,嘿,很快,它起作用了!现在,您可以通过平移场景中的对象来旋转场景,或者在点击对象时平移对象。
关于ios - 如果 HitTest 失败,则将平移手势传递给默认相机 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59510398/
我有一个包含任意数量锯齿状元素的 WrapPanel。我想为我的项目实现拖动选择。 如何对一个点进行 HitTest 似乎很明显,但我如何才能找到矩形区域内的所有项目? 最佳答案 您可以使用 Visu
我有以下用户控件:一个点及其名称: 这很酷。 现在,我有一个面板,我需要恢复我用鼠标击中的停止点: public partial class
我有一个 UIView,其中包含许多 CALayer 子类。我使用以下代码来检测触摸事件对应于哪一层: - (void)touchesBegan:(NSSet *)touches withEvent:
我有一个透明的 NSView,它画了一个圆圈。我想自定义显示上下文菜单时使用的 HitTest 。 目前它使用边界矩形。我想更改它以测试圆圈内的点击。 最佳答案 尝试覆盖 NSView menuFor
我有一个包含驻留在 Viewport3D 中的 3D 对象的应用程序,我希望用户能够通过在屏幕上拖动一个矩形来选择它们。 我尝试在 Viewport3D 上应用 GeometryHitTestPara
在 RenderTransform 属性中具有较大缩放因子的 Path 元素上,输入命中测试会产生不正确的结果。 以下 XAML 定义了一个带有实心圆和Hand 光标的 Path。
我试图扩展 java ScrollDemo2 来报告 Canvas 上的形状是否被单击。我从一个简单的矩形开始,相信简单地循环 Canvas 中的矩形检查点击点是否包含在其中应该没有问题。但随后发生了
有没有办法在wpf中 HitTest 字符的像素?我希望能够命中字符“i”的点,但是当我单击点和“i”行之间的空格时不会命中。我尝试使用 DrawingContext.DrawText 方法来完成此操
我是 silverlight 的新手,正在尝试阅读使用 HitTest 方法了解鼠标何时位于控件上的 silverlight 教程。但不幸的是,我看不到任何具有此名称的方法。 HitTest 方法在哪
我正在使用 Graphics.DrawString 写出一个字符串,并且需要在给定鼠标位置的字符串中获取字符索引。 这看起来应该很简单,但我真的很难找到一种可行的方法。 我发现 e.Graphics.
我正在使用这种方法来检测是否有人点击了叠加层。现在一切正常,除了点击区域太小。所以我查看了 api,它说“查看给定的命中点是否在项目标记的范围内。”。 我像这样把边界变大了: Log.d("debug
我有一个位图图像,我正在尝试对其进行 HitTest 。如果它只是一个普通位图,则 HitTest 有效。但是我需要旋转和缩放位图,但我似乎无法正确计算出 HitTest 。 这里的x和y是光标x和y
这有点难以解释,所以我举个例子。 mysql表书籍 书籍 firstname |lastname |state |favbook john |doe | WA |bookna
UIViews是否针对UIGestureRecognizers 进行了 HitTest in the same way因为它们用于触摸事件?特别是,是否使用了相同的 hitTest:withEvent
我试图显示过去两天最流行的项目,但这个 View 让两天前发生的项目出现了。 它是为了找到最近两天最流行的(可能是 20-30 个项目)并用随机项目填充剩余的( View 上始终需要 1000 个项目
继上一个问题之后,我试图找出下一个问题是否可行: 假设您有一个渲染图,例如具有透明背景的足球运动员。您将此呈现器添加到您的 html 和 css 中。透明部分现在是图像“盒子”的一部分;你不能点击图片
我自定义了一个列表框来显示饼图(每个列表项都是饼图的一部分)。为此,我使用了一个 Itemtemplate,它(目前)仅包含一个 Shape。为了使这些形状形成一个完整的圆,我计算了每 block 的
我的程序中有一个简单的矩形,我必须对其进行 HitTest 。我正在使用 openFrameworks,但我认为这里的问题也与 OpenGL 主题有关。 public class Shape : pu
在处理草图中实现选择算法时,我循环遍历场景中的每个对象,并检查它是否在鼠标点击位置的几个像素范围内。有很多对象,而且它们非常小。 正如您可以想象的那样,一旦场景中充满了物体,这就会变得非常麻烦。有没有
我想设计一个 PvP 游戏,在客户端和 java 套接字服务器中使用 flash,但我确实需要服务器验证弹道以及子弹是否从作弊中击中目标。 是否有任何教程或论文提供了如何做到这一点? 最佳答案 要做到
我是一名优秀的程序员,十分优秀!