Мультитач не работает в cocos2d - PullRequest
2 голосов
/ 25 января 2011

Это мой метод 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 ]

4 голосов
/ 26 января 2011

Включили ли вы несколько касаний в вашем glView? По умолчанию glView создается в делегате приложения. Код ниже.

[glView setMultipleTouchEnabled:YES];
2 голосов
/ 25 января 2011

Если вы разрабатываете приложение Retina Display, помните, что все координаты указаны в точках, а не в пикселях.Таким образом, даже на дисплее Retina с разрешением 960x640 пикселей координаты в точках (ваше местоположение касания) будут находиться в диапазоне 480x320.

Если вы хотите использовать пиксели, используйте версию всех координат InPixels, вcase:

sprite.positionInPixels = ccp(992, 100);

Если это не проблема, вы должны добавить в свой пост, каков ожидаемый результат и что вместо этого происходит.Небольшой контекст имеет большое значение.

1 голос
/ 25 января 2011

Что говорит отладчик во всех касаниях? Вместо этого вы можете попробовать получить все штрихи для вида:

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