多点触控在cocos2d中不起作用

时间:2011-01-25 12:45:09

标签: iphone cocos2d-iphone multi-touch

这是我的ccTouchesMoved方法。 怎么了?我使用cocos2d框架。

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

CCNode *sprite = [self getChildByTag:kTagPlayer];
CCNode *sprite2 = [self getChildByTag:kTagEnemy];

CGPoint point;

//Собрать все касания.
NSSet *allTouches = [event allTouches];

for (UITouch *touch in allTouches)
{
    point = [touch locationInView:[touch view]];
    point = [[CCDirector sharedDirector] convertToGL:point];

    if (point.y > 384)
    {
        if (point.x > 992)
            sprite2.position = ccp(992, size.height - 100);
        else if (point.x < 32)
            sprite2.position = ccp(32, size.height - 100);
        else
            sprite2.position = ccp(point.x, size.height - 100);
    }
    else
    {
        if (point.x > 992)
            sprite.position = ccp(992, 100);
        else if (point.x < 32)
            sprite.position = ccp(32, 100);
        else
            sprite.position = ccp(point.x, 100);
    }
} 

}

3 个答案:

答案 0 :(得分:4)

您是否在glView中启用了多个触控功能?默认情况下,glView在app delegate中实例化。代码如下。

[glView setMultipleTouchEnabled:YES];

答案 1 :(得分:2)

如果您正在开发Retina显示应用程序,请注意所有坐标都是以点为单位,而不是像素。因此,即使在960x640像素的Retina显示屏上,点的坐标(您的触摸位置)也将在480x320范围内。

如果您想使用像素,请使用所有坐标的“InPixels”版本,在这种情况下:

sprite.positionInPixels = ccp(992, 100);

如果这不是问题,您应该在帖子中添加预期结果是什么以及会发生什么。一点点背景都有很长的路要走。

答案 2 :(得分:1)

调试器在allTouches中说了什么?您可以尝试获取此类视图的所有内容:

UITouch* touch = [touches anyObject];
NSSet* allTouches = [touches setByAddingObjectsFromSet:[event touchesForView:[touch view]]];