Я уже реализовал мультитач-поворот изображения, используя стандартную графическую библиотеку iOS (Core Graphics).Как реализовать Cocos2d мультитач sprite rotation?
Это выглядит следующим образом:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if ([touches count] == 2) {
NSArray *twoTouches = [touches allObjects];
UITouch *first = [twoTouches objectAtIndex:0];
UITouch *second = [twoTouches objectAtIndex:1];
CGFloat currentAngle = angleBetweenLinesInRadians([first previousLocationInView:self.view], [second previousLocationInView:self.view], [first locationInView:self.view], [second locationInView:self.view]);
pic1.transform = CGAffineTransformRotate(pic1.transform, currentAngle);
}
}
Теперь я пытаюсь реализовать это решение в моем проекте Cocos2d. Сначала я зарегистрировал CCTouchDispacher в методе init.
- (id) init
{
...
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
...
}
В моей функции ccTouchMoved я изменил (UITouch *) к (NSSet *) и построил проект просто убедиться, что все было правильно. В результате я получил следующее предупреждение: «Несовместимые объекты Objective-C, инициализирующие« struct NSSet * », ожидаемые« struct UITouch * ».
Как все, казалось, работало правильно, я перешел и попытался извлечь первый и второй сенсорные объекты из (NSSet *).
- (void)ccTouchMoved:(NSSet *)touch withEvent:(UIEvent *)event {
if ([touch count] == 2) {
NSArray *twoTouches = [touch allObjects];
UITouch *first = [twoTouches objectAtIndex:0];
UITouch *second = [twoTouches objectAtIndex:1];
}
}
Теперь я пытался скомпилировать его, который работал, но после того, как я вызвал ccTouchMoved через iPhone симулятор, я получил следующее сообщение об ошибке: «- [UITouch число]: непризнанные селектор направлен например 0x542d6a0' ».
Может кто-нибудь объяснить, как получить этот Cocos2d ccTouchMoved метод распознавания и обработки событий мультитач?
Спасибо.
привет pacman, могли бы вы рассказать мне, как вы реализовали angleBetweenLinesInRadians ? Благодарю. –