Как я могу обнаружить, связано ли прикосновение к спрайту или нет в состоянии зума?
-
02-10-2019 - |
Вопрос
Сначала я масштабировал слой больше, который содержит спрайты. Теперь мне нужно чувствовать прикосновение к спрайту. Я пробовал следующим образом, но не могу добраться до цели-
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);
}
FYI: Я использовал Cocos2D Framework
Решение 3
Наконец я нашел решение :), вот код
CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedLocation = [[CCDirector sharedDirector] convertToGL:location];
CGPoint tapPosition = [self convertToNodeSpace:convertedLocation];
где «я» - это слой держателя спрайта, как я уже указал. Этот слой прослушивает сенсорное событие.
Другие советы
Во-первых, вам нужно убедиться, что вы получите местоположение от UITouch
правильно.
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
Во-вторых, вам нужно проверить ваше касание против ограничительной коробки спрайта.
if (CGRectContainsPoint([sprite boundingBox], location)) {
// The sprite is being touched.
}
Фрэнк Митчелл правильный. Другой подход будет добавить свой прослушивающий код в сам спрайт, чтобы Кокосос выполнил работу для вас. Он будет отправлять только мероприятия CCTouchesbegesbegan Sprite, если оно на самом деле касается.