Comment puis-je détecter si une action tactile touche à une image-objet ou non à l'état de zoom?
-
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
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é.