【问题标题】:How do I detect multi-touch in cocos2d?如何在 cocos2d 中检测多点触控?
【发布时间】:2011-10-14 02:37:52
【问题描述】:

编辑过的帖子

好的,我尝试了 rptwsthi 在另一个项目中所说的只是为了测试它......

-(id) init
{
if( (self=[super init])) {

    self.isTouchEnabled = YES;
}
return self;
}

- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{
    NSArray *touchArray=[touches allObjects];

    if ([touchArray count] == 2) {
        NSLog(@"touch 2");
    }
    else if([touchArray count]==1) {
        NSLog(@"touch 1");
    }
}

但是当我用两根手指按下屏幕时,只会弹出“touch 1”NSLog。是不是也需要把LearnCocos2D说的话放在那里。

旧帖

我正在制作一个测试应用程序,其中我有 3 个按钮,其中 2 个用于左右移动,另一个用于拍摄。这是我目前拥有的.....

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint loc = [touch locationInView:[touch view]];
loc = [[CCDirector sharedDirector] convertToGL:loc];

//Move Left
CGRect left = CGRectMake(leftButton.position.x-50/2, leftButton.position.y-50/2, 50, 50);
if (CGRectContainsPoint(left, loc)) {
    [self schedule:@selector(moveLeft)]; 
}

//Move Right
CGRect right = CGRectMake(rightButton.position.x-50/2, rightButton.position.y-50/2, 50, 50);
if (CGRectContainsPoint(right, loc)) {
    [self schedule:@selector(moveRight)];
}

//Shoot
CGRect shoot = CGRectMake(shootButton.position.x-50/2, shootButton.position.y-50/2, 50, 50);
    if (CGRectContainsPoint(shoot, loc)) {
    bullet = [CCSprite spriteWithFile:@"bullet.png"];
    bullet.position = ccp(plane.position.x, plane.position.y+20);
    [self addChild:bullet];
    }
}

-(void) ccTouchesEnded:(UITouch *)touch withEvent:(UIEvent *)event {
    [self unschedule:@selector(moveLeft)];
    [self unschedule:@selector(moveRight)];
}

但我一次只能按一个按钮。我希望能够按住右或左按钮并使用拍摄按钮进行拍摄。谁能修复我的代码或向我展示多点触控的基本示例?

另外,我是 iOS 开发的新手,任何帮助都将不胜感激。谢谢。

【问题讨论】:

    标签: cocos2d-iphone multi-touch


    【解决方案1】:

    你是否在 cocos2d 视图上启用了多次触摸?

    [[CCDirector sharedDirector].openGLView setMultipleTouchEnabled:YES];
    

    【讨论】:

    • 对不起,我把这个放在哪里?我不确定 cocos2d 文件是什么文件。
    • 你可以在任何地方调用这个方法,例如在你的场景的init方法中或者在应用代理的applicationDidFinishLaunching方法中。
    【解决方案2】:

    您只需使用allObject 而不是anyObject,然后像这样检查它:

    - (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
    {
        NSArray *touchArray=[touches allObjects];
    
        if ([touchArray count] == 2)
            //DO ONE THING 
        else if([touchArray count]==1)
            //DO ANOTHER THING
    }
    

    【讨论】:

    • 请参考this link..,这将为您提供更多帮助
    猜你喜欢
    • 2011-05-02
    • 2012-04-12
    • 1970-01-01
    • 2010-12-18
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多