recognizer cocos2d-iphone uigesturerecognizer tap

cocos2d iphone - recognizer - Duración del toque en cocos2d



uipangesturerecognizer swift 4 (3)

¿Alguna idea de cómo manejar la duración del tap en cocos2d?

Necesito hacer algo después de que el usuario mantenga su dedo sobre cierto sprite durante aproximadamente 1-2 segundos.

Gracias.


Para usar un UILongPressGestureRecognizer, puede hacer algo como esto:

UILongPressGestureRecognizer* recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressFrom:)]; recognizer.minimumPressDuration = 2.0; // seconds AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate]; [appDelegate.viewController.view addGestureRecognizer:recognizer];

Su manejador de prensas largas podría verse así:

-(void)handleLongPressFrom:(UILongPressGestureRecognizer*)recognizer { if(recognizer.state == UIGestureRecognizerStateEnded) { CCLOG(@"Long press gesture recognized."); // Get the location of the touch in Cocos coordinates. CGPoint touchLocation = [recognizer locationInView:recognizer.view]; CCDirector* director = [CCDirector sharedDirector]; touchLocation = [director convertToGL:touchLocation]; touchLocation = [[director runningScene] convertToNodeSpace:touchLocation]; // Your stuff. } }

Cuando hayas terminado, no te olvides de eliminarlo.

AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate]; [appDelegate.viewController.view removeGestureRecognizer:recognizer];



Tienes que hacerlo de la manera manual:

  1. Agregue un indicador BOOL ivar y un flotante ivar en su subclase CCLayer.
  2. Al comenzar el toque, establece la bandera en TRUE y restablece el flotante ivar a 0.0
  3. Al tocar movido, terminado o cancelado, establezca la bandera en FALSO.
  4. En la update o tick , aumente el valor de iva flotante por la cantidad dt . Verifique si ese valor de iva flotante realiza su lógica si es mayor que su valor de umbral (1.0 o 2.0 segundos).

Si desea manejar varios toques, es posible que necesite una forma de adjuntar y diferenciar el indicador BOOL y la combinación de ivar flotante con cada toque.

Sugeriría crear una subclase intermedia entre CCLayer y su subclase de implementación para que pueda ocultar el mecanismo de la subclase de implementación y también para permitir su fácil reutilización.