我已经使用标准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项目中实现此解决方案。首先,我在init方法中注册了CCTouchDispacher。
- (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];
}
}
现在我尝试编译它,但是在我通过iPhone模拟器触发ccTouchMoved后,我收到以下错误消息:“ - [UITouch count]:无法识别的选择器发送到实例0x542d6a0'”。
有人可以解释一下,如何让这个Cocos2d ccTouchMoved方法识别和处理多点触控事件?
感谢。
答案 0 :(得分:3)
您使用了错误的CC2D方法。
你应该使用
- (BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
而不是
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
因为您想要捕获多个触摸,ccTouchMoved只捕获一个