SKSpriteNode子类并触及事件

Mat*_*oal 3 ios sprite-kit

我无法理解为什么如果我将实现UIResponder协议的SKSpriteNode子类化,则从未调用与触摸相关的方法.

例如,这是一个非常简单的类,我正在使用它作为测试:

//INTERFACE ----------------
#import <SpriteKit/SpriteKit.h>

@interface TestClass : SKSpriteNode

@end

//IMPLEMENTATION -----------
#import "TestClass.h"

@implementation TestClass


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
     NSLog(@"oook");
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{}

@end
Run Code Online (Sandbox Code Playgroud)

如果我将这个类的实例附加到场景中,触摸对象......没有任何反应.

我忘记了什么吗?

Mat*_*oal 13

我刚刚看到SKNode的参数userInteractionEnabled默认等于NO.只需将其设置YES为使代码正常工作即可.

  • 但如果它被一个没有启用交互的精灵所覆盖,则覆盖精灵会吞下这些触摸...... (4认同)
  • 我只是尝试了这个,如果覆盖精灵具有userInteractionEnabled,它似乎无关紧要,它将阻止对下面的精灵的触摸.我希望找到解决这种行为的方法,因为我希望透明云在前景中移动. (4认同)
  • @AndreyGordeev使按钮呈现在"覆盖"精灵之上,这违背了覆盖精灵的目的,因为它不再覆盖了.我实际上写了一篇关于这个的帖子,并把我的解决方案放在gist https://gist.github.com/bobmoff/7110052上.我不知道它的确定帖子链接到自写博客帖子:) (2认同)