Я пытаюсь разместить серию спрайтов на слое, но поскольку я хочу переместить все спрайты как группу, я создал CocosNode, установил для него тот же размер, что и экран, и разместил его в центре screen, затем добавьте спрайты к этому узлу (lightNode) вместо того, чтобы добавлять их к слою.
Я вижу, что спрайты не отображаются в правильных (одинаковых?) Положениях по сравнению с тем, когда я помещаю их в слой, а не в lightNode.
Я сделал тестовую программу, чтобы показать проблему, используя шаблон приложения XCode Cocos2d «Hello World» - затем я заменил метод -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, который я использую как родительский для спрайтов. Кто-нибудь видит, что я здесь делаю не так ??