sirven sirve que punto para los inteligente inicio gestos desactivar control boton iphone cocos2d-iphone

iphone - sirve - cocos2d-iOS-Reconocedores de gestos



para que sirven los gestos en el iphone 6 (2)

Necesita conectar el reconocedor de gestos a algo "en la cadena". No los adjunte a los nodos individuales; adjúntelos a UIView (es decir, [[CCDirector sharedDirector] openGLView]).

Esto es lo que hice:

- (UIPanGestureRecognizer *)watchForPan:(SEL)selector number:(int)tapsRequired { UIPanGestureRecognizer *recognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:selector] autorelease]; recognizer.minimumNumberOfTouches = tapsRequired; [[[CCDirector sharedDirector] openGLView] addGestureRecognizer:recognizer]; return recognizer; } - (void)unwatch:(UIGestureRecognizer *)gr { [[[CCDirector sharedDirector] openGLView] removeGestureRecognizer:gr]; }

Este código en particular se usa en una superclase para controladores de escena, por lo que el objetivo para el selector está codificado en "sí mismo", pero podría abstraerlo fácilmente a un objeto pasado. Además, podría extrapolar lo anterior para crear fácilmente reconocedores de gestos para grifos, pellizcos, etc.

En la subclase para el controlador, entonces, solo hago esto:

- (MyController *)init { if ((self = [super init])) { [self watchForPan:@selector(panning:) number:1]; } return self; } - (void)panning:(UIPanGestureRecognizer *)recognizer { CGPoint p; CGPoint v; switch( recognizer.state ) { case UIGestureRecognizerStatePossible: case UIGestureRecognizerStateBegan: p = [recognizer locationInView:[CCDirector sharedDirector].openGLView]; (do something when the pan begins) break; case UIGestureRecognizerStateChanged: p = [recognizer locationInView:[CCDirector sharedDirector].openGLView]; (do something while the pan is in progress) break; case UIGestureRecognizerStateFailed: break; case UIGestureRecognizerStateEnded: case UIGestureRecognizerStateCancelled: (do something when the pan ends) (the below gets the velocity; good for letting player "fling" things) v = [recognizer velocityInView:[CCDirector sharedDirector].openGLView]; break; } }

¿Alguien ha logrado que el reconocimiento de gestos funcione en cocos-2d?

He leído una publicación aquí que afirma haberlo logrado, aquí: http://www.cocos2d-iphone.org/forum/topic/8929

He parcheado desde el centro git aquí: https://github.com/xemus/cocos2d-GestureRecognizers/blob/master/README

Hice una subclase de CCSprite (que es una subclase de CCNode ):

-(id) initWithTexture:(CCTexture2D*)texture rect:(CGRect)rect { if( (self=[super initWithTexture:texture rect:rect]) ) { CCGestureRecognizer* recognizer; recognizer = [CCGestureRecognizer CCRecognizerWithRecognizerTargetAction:[[[UITapGestureRecognizer alloc]init] autorelease] target:self action:@selector(tap:node:)]; [self addGestureRecognizer:recognizer]; } return self; }

Método delegado:

- (void) swipe:(UIGestureRecognizer*)recognizer node:(CCNode*)node { NSLog(@" I never get called :( "); }

Mi evento tap nunca se llama.

¿Alguien ha conseguido que esto funcione? ¿Qué tan difícil es realizar el reconocimiento de gestos manualmente para la detección de deslizamiento?