iOS7 Sprite Kit 如何禁用对 Sprite 的触摸以使其成为 "tap through"?

标签 ios iphone objective-c sprite-kit user-interaction

我知道对于传统的 UIViews,我可以将“启用用户交互”标志设置为 NO, View 将不再响应触摸,让它们下面的 View 接收触摸。

有没有什么方法可以在 Sprite Kit 中实现相同的“点按”功能?到目前为止,我只看到人们使用“Touches begin”,了解要点并在该点向场景询问节点。

这种方法的问题是 - 如果我想在 sprite 上添加叠加层(如怪物生命值等),它们也会响应触摸。到目前为止,我试图通过为不同的节点创建自定义类来避免这个问题,然后使用一个非常大的 if 语句来检查每个节点的类。

有没有更好的方法来实现 sprite kit 的“点按”功能?

最佳答案

如果您在子类 SKSpriteNode 上将 userInteractionEnabled 属性设置为 YES,则将在该类中调用触摸委托(delegate)。因此,您可以在其类中处理 Sprite 的触摸。

但是,默认情况下,userInteractionEnabled 属性设置为 NO。因此,默认情况下,对 Sprite 的触摸是“点击”。

因此,对于您想要的叠加层,为 Sprite 创建自定义类,在该类中实现 touchesBegan: 和其他委托(delegate),并在初始化时设置 userInteractionEnabled 属性到 YES

关于iOS7 Sprite Kit 如何禁用对 Sprite 的触摸以使其成为 "tap through"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481939/

相关文章:

iOS AVFoundation 设置曝光值,以 EV 为单位

ios - Swift:如果用户已经登录,如何 checkin AppDelegate

ios - xcassets 中的所有图像,然后如何加载从我的包中的 Nib 引用的图像

ios - 如何在每第 4 个字符后添加连字符到 iOS 中的字符串

objective-c - 按钮不起作用

ios - 调用嵌入式 containerVC 方法时不调用父 VC 委托(delegate)方法

ios ble - 无响应写入”属性 - 忽略无响应写入

iphone - UITableView 滚动使应用程序崩溃

iphone - 倒数计时器 - iPhone

ios - UIViewanimationWithDuration递归导致抖动