Comment puis-je détecter si une action tactile touche à une image-objet ou non à l'état de zoom?

StackOverflow https://stackoverflow.com/questions/3174123

  •  02-10-2019
  •  | 
  •  

Question

First i ont réduit la couche plus large qui contient les sprites. Maintenant, je dois sentir toucher sur un sprite. J'ai essayé comme suit, mais la portée peut pas jouer car but -

CGRect tRect= [[aSprite displayedFrame] rect];
    if(CGRectContainsPoint(tRect, touchedPosition))
{
    NSLog(@"touched:>> touch at (%f,%f)",touchedPosition.x,touchedPosition.y);
    // Do something, maybe return kEventHandled;
}
else{
    NSLog(@"NOT touched: touch at (%f,%f)",touchedPosition.x,touchedPosition.y);
}

Pour votre information: Je l'ai utilisé cadre cocos2d

Était-ce utile?

La solution 3

Enfin, je l'ai trouvé la solution :), voici le code

CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedLocation = [[CCDirector sharedDirector] convertToGL:location];

CGPoint tapPosition = [self convertToNodeSpace:convertedLocation];

où « soi » est la couche de support l'image-objet comme je l'ai indiqué auparavant. Cette couche écoute l'événement tactile.

Autres conseils

Tout d'abord, vous devez vous assurer d'obtenir l'emplacement du UITouch correctement.

CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];

En second lieu, vous devez tester votre contact contre la zone de délimitation de l'image-objet.

if (CGRectContainsPoint([sprite boundingBox], location)) {
    // The sprite is being touched.
}

Frank Mitchell est correct. Une autre approche serait d'ajouter votre code d'écoute au sprite lui-même de sorte que Cocos fera le travail pour vous. Il n'enverra les événements ccTouchesBegan sprite si elle est effectivement touché.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top