【问题标题】:How to enable multitouch cocos2d如何启用多点触控 cocos2d
【发布时间】:2023-04-03 23:51:01
【问题描述】:

我希望能够为 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());
}
}

【问题讨论】:

    标签: iphone xcode cocos2d-iphone box2d multi-touch


    【解决方案1】:

    这个页面描述得很好。

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

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

    自定义视图(UIView 的子类) UIViewController 的子类或其 UIKit 子类之一 UIKit 视图或控件类的子类,例如 UIImageView 或 UISlider UIApplication 或 UIWindow 的子类(尽管这种情况很少见) 如果视图不覆盖触摸处理方法,则视图控制器通常会通过响应者链接收最初发送到其视图的触摸事件。

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多