Cocos2d - несколько спрайтов на родительском узле не слой

Я пытаюсь поместить серию спрайтов на слое, но так как я хочу переместить все спрайты как группа, я создал CocosNode, установил его на тот же размер как экран и располагаю его в центр экрана, затем добавляю Спрайты к тому узлу (lightNode) вместо того, чтобы добавить их к слою.

Что я вижу, что это - спрайты, не появляются в корректном (то же?) положения по сравнению с тем, когда я размещаю их в слой а не в lightNode.

Я сделал тестовую программу для показа проблемы с помощью шаблона приложений XCode Cocos2d "Привет Мир" - я затем заменил-init () метод класса HelloWorld в HelloWorldScene.m с этим кодом.

-(id) init
{
    if( (self=[super init] )) 
    {
        // create my parent node that will contain all the related sprites
        lightPane = [[CocosNode alloc] init];
        CGSize paneSize = { 480, 320 };
        [lightPane setContentSize:paneSize]; 
        [lightPane setPosition:ccp(240, 160)];

        // add pane to layer     
        [self addChild:lightPane z:0];

        // add a series of sprites to demonstrate the problem 
        int y = 40;
        int x;
        for (x=30; x<300; x+=20)
        {
            Sprite *sp = [Sprite spriteWithFile:@"pause.png"];
            [sp setPosition:ccp(x, y)];

            NSLog(@"Next sprite at position (%d, %d)", x, y);

            [lightPane addChild:sp z:1];
            //[self addChild:sp z:1]; 
            x+= 20;
        }
    }
    return self;
}

Этот код ссылается на файл PNG, названный "pause.png" - просто берут любое маленькое изображение приблизительно 30x30 пикселей в размере и помещают его в этот проект выполнить его.

То, что Вы будете видеть, - то, что спрайты появляются примерно на полпути экран, запускающийся в середине и направляющийся в правую сторону.

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

Это, очевидно, имеет некоторое отношение к CocosNode, который я использую в качестве родителя для спрайтов. Кто-либо видит то, что я делаю неправильно здесь??

5
задан wonea 27 July 2016 в 07:21
поделиться

2 ответа

You want to set the position of lightPane to 0,0. The position is not centered by default, it is the bottom left corner.

3
ответ дан 15 December 2019 в 06:28
поделиться

Keep in mind that if you move to a sprite atlas, this won't work. Not unless you move to the new version of Cocos2d (1.9, which is in beta). The 1.9 version will let you do complex parenting of atlas sprites.

0
ответ дан 15 December 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: