我希望能够为cocos2d启用多点触控。我怎样才能做到这一点?我想测试每个触摸事件,如下面的代码。请帮忙。
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
CGSize screenSize = [CCDirector sharedDirector].winSize;
if (locationWorld.x >= screenSize.width*2/5/PTM_RATIO && locationWorld.x <= screenSize.width*3.25/5/PTM_RATIO) {
cannonballTouch1 = 1;
float force = 6;
b2Vec2 direction = cannonballBody->GetWorldCenter() - cannonBody->GetWorldCenter();
b2Vec2 iforce = b2Vec2(1.0f/direction.x * force, 1.0f/direction.y * force);
NSLog(@"%.2f", direction.y);
NSLog(@"%.2f", iforce.y);
b2Vec2 force1 = b2Vec2(0, iforce.y);
cannonballBody->ApplyLinearImpulse(force1, cannonballBody->GetPosition());
}
if (locationWorld.x > screenSize.width*3.25/5/PTM_RATIO) {
cannonballTouch2 = 1;
float force = 6;
b2Vec2 direction = cannonballBody2->GetWorldCenter() - cannonBody2->GetWorldCenter();
b2Vec2 iforce = b2Vec2(1.0f/direction.x * force, 1.0f/direction.y * force);
NSLog(@"%.2f", direction.y);
NSLog(@"%.2f", iforce.y);
b2Vec2 force1 = b2Vec2(0, iforce.y);
cannonballBody2->ApplyLinearImpulse(force1, cannonballBody2->GetPosition());
}
}
答案 0 :(得分:0)
这页很好地描述了它。
要处理多点触控事件,必须首先创建响应者类的子类。该子类可以是以下任何一种:
自定义视图(UIView的子类) UIViewController的子类或其UIKit子类之一 UIKit视图或控件类的子类,例如UIImageView或UISlider UIApplication或UIWindow的子类(虽然这很少见) 视图控制器通常通过响应者链接收最初发送到其视图的触摸事件(如果该视图未覆盖触摸处理方法)。
对于您的子类接收多点触控事件的实例,您的子类必须实现一个或多个用于触摸事件处理的UIResponder方法,如下所述。此外,视图必须是可见的(既不透明也不隐藏),并且必须将其userInteractionEnabled属性设置为YES,这是默认值。
以下部分描述了触摸事件处理方法,描述了处理常见手势的方法,显示了处理复杂多点触控事件序列的响应器对象的示例,讨论了事件转发,并提出了一些事件处理技术。 / p>