2013-09-30 2 views
3

Не могу понять, почему, если я подклассифицирую SKSpriteNode, который реализует протокол 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 

Если я прилагаю экземпляр этого класса на сцену, прикасаясь к объекту ... ничего не происходит.

Я что-то забыл?

ответ

13

Я только что видел, что SKNode имеет параметр userInteractionEnabled по умолчанию равен NO. Просто установите его на YES, чтобы код работал правильно.

+4

, но если его покрыто спрайтом, у которого нет взаимодействия, покрывающий спрайт проглатывает штрихи ... – DogCoffee

+0

@Smick, вы имеете в виду, что можно нажимать «через» покрывающие спрайты, если у них есть userinteractionEnabled = ДА? – bobmoff

+4

Я просто попробовал это, и это не кажется важным, если у спрайта справки есть userInteractionEnabled или нет, он будет блокировать прикосновения к спрайту ниже. Мне очень хотелось бы найти способ обойти это поведение, поскольку я хочу, чтобы прозрачное облако двигалось в поле. – bobmoff

Смежные вопросы