2011-09-21 25 views
0

我希望能够为cocos2d启用多点触控。我怎样才能做到这一点?我想测试每个触摸事件,就像我的代码如下。请帮忙。如何启用多点触控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

这个页面描述得很好。

http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MultitouchEvents/MultitouchEvents.html

要处理的多点触控事件,您必须首先创建一个响应者类的子类。该亚类可以是以下的任何一种:或

自定义视图(UIView的的亚类) 的UIViewController的一个子类它的UIKit子类 之一的UIKit视图或控制类的子类,如的UIImageView或UISlider UIApplication或UIWindow的子类(尽管这很罕见) 视图控制器通常通过响应程序链接收最初发送到其视图的触摸事件(如果该视图未覆盖触摸处理方法)。

对于您的子类接收多点触控事件的实例,您的子类必须实现一个或多个用于触摸事件处理的UIResponder方法,如下所述。另外,视图必须是可见的(既不透明也不隐藏),并且必须将其userInteractionEnabled属性设置为YES,这是默认设置。

以下部分描述了触摸事件处理方法,描述了处理常见手势的方法,显示了处理复杂触摸事件序列的响应对象示例,讨论事件转发以及建议一些事件处理技术。