группировать спрайты и перемещать их? - PullRequest
0 голосов
/ 31 марта 2011

Я хочу сгруппировать свои спрайты, которые я вызываю, из массива, чтобы я мог перемещать их как группу.Мне сказали использовать cocosnode, но я уверен, что он имел в виду ccnode.Вот мой код:

    sprites1 = (CCSprite *)[c1array objectAtIndex:0];
    sprites2 = (CCSprite *)[c1array objectAtIndex:1];
    sprites3 = (CCSprite *)[c1array objectAtIndex:2];
    sprites4 = (CCSprite *)[c1array objectAtIndex:3];
    sprites5 = (CCSprite *)[c1array objectAtIndex:4];
    sprites6 = (CCSprite *)[c1array objectAtIndex:5];
    sprites7 = (CCSprite *)[c1array objectAtIndex:6];
    sprites8 = (CCSprite *)[c1array objectAtIndex:7];

    column1 = [CCNode node];
    [column1 addChild:sprites1];
    [column1 addChild:sprites2];
    [column1 addChild:sprites3];
    [column1 addChild:sprites4];
    column1.position = ccp(0,0);
    [self addChild:column1];

    column2 = [CCNode node];
    [column2 addChild:sprites5];
    [column2 addChild:sprites6];
    [column2 addChild:sprites7];
    [column2 addChild:sprites8];
    column2.position = ccp(30,0);
    [self addChild:column2];

//ccotouchmoved code
column1.anchorPoint = ccp(touchLocation.x,touchLocation.y);
if (CGRectContainsPoint(c1,touchLocation)) {
        touchLocation.x = column1.position.x;
        column1.position = ccp(touchLocation.x,touchLocation.y);
}

как мне сделать так, чтобы ccnode двигался плавно.Он сильно подпрыгивает, но я хочу плавного перехода вверх и вниз.

xxx

xxx

xxx

x являютсямои спрайты, я перемещаю свой х вниз и вверх как целый столбец и должен иметь возможность перемещать мой х как целый ряд, а когда он уходит с верхней части экрана, мне нужно, чтобы он снова появился на противоположной сторонеэкран и наоборот одинаковы для левого и правого.

1 Ответ

0 голосов
/ 01 апреля 2011

Возможно, причина его сбоя в том, что один из Sprite5, Sprite6, Sprite7, Sprite8 в nil. И запрещено добавлять ноль детей к CCNode.

В методе touchBegan:

CGPoint touchLocation = ...;
CGPoint referencePoint = ccpSub(touchLocation, myNode.position);
//keep reference point somewhere

в методе TouchMoved:

CGPoint touchLocation = ...;
myNode.position = ccpSub(touchLocation, referencePoint);
...