Я уже реализовал мультисенсорное вращение изображения, используя стандартную графическую библиотеку iOS (Core Graphics).
Это выглядит так:
- (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 *) touch.
- (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 я получил следующее сообщение об ошибке: "- [UITouchcount]: нераспознанный селектор отправлен в экземпляр 0x542d6a0 '".
Может кто-нибудь объяснить, как заставить этот метод Cocos2d ccTouchMoved распознавать и обрабатывать события мультитач?
Спасибо.