在不使其可触摸的情况下,为SKSpriteNode添加标签

7

如何关闭子节点的交互?

我正在为一堆精灵添加标签,描述它们是什么。这些精灵本身是可触摸的,并且有响应touchesBegun等的代码。

这些标签在视觉上不重叠精灵,它们完全位于Sprites的视觉表示下方,但它们是各自Sprite的子节点,我想保持这样。

但我不希望标签对触摸做出响应。

我将标签设置为:

myLabel.isUserInteractionEnabled = false

但这并没有什么区别,它们仍然像Sprite一样对触摸作出响应。

尝试使用 label.isPaused = true。不知道它是否有效,但我觉得它可能会有所作用... - Nik
1个回答

1
默认情况下,isUserInteractionEnabledfalse,因此对于像 SKLabelNode 这样的子节点上的触摸事件,默认情况下只是简单地传递给主类(或父类)处理(该对象存在,但如果您不实现任何操作,则只是触摸它)。
如果在子类化的 SKNode 上设置 userInteractionEnabled 属性为true,则触摸委托将在此特定类中被调用。因此,您可以在其类内部处理标签(如您的情况)的触摸事件。

这是否意味着必须处理标签上的触摸,并手动拒绝,否则(当其交互被关闭时)它仍然会传递触摸? - Confused
如果您不希望标签被触摸,您必须在主父类中手动处理并“拒绝”它,如果您的意思是“不对其进行任何操作”。 - Alessandro Ornano
好的。很好。但是怎么做呢?我完全不明白。 - Confused
请查看此答案 http://stackoverflow.com/a/40419334/1894067,其中用代码解释了类似的问题。 - Alessandro Ornano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接