레이어에 일련의 스프라이트를 배치하려하지만 모든 스프라이트를 그룹으로 이동하려고하므로 CocosNode를 만들어 동일한 레이어로 설정합니다. 크기를 화면으로 가져 와서 화면 중앙에 배치 한 다음 레이어에 추가하는 대신 해당 노드 (lightNode)에 스프라이트를 추가하십시오.Cocos2d - 부모 노드의 여러 스프라이트가 레이어가 아닌
내가보고있는 것은 lightNode가 아닌 레이어에 배치 할 때와 비교하여 스프라이트가 올바른 (동일한?) 위치에 나타나지 않는다는 것입니다.
XCode Cocos2d 응용 프로그램 템플릿 "Hello World"를 사용하여 문제를 표시하는 테스트 프로그램을 작성한 다음 HelloWorldScene.m의 HelloWorld 클래스의 -init() 메소드를이 코드로 바꿨습니다.
-(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;
}
이 코드는 "pause.png"라는 PNG 파일을 참조 - 단지 크기가 30x30 픽셀에 대한 작은 이미지를 촬영하고 실행하기 위해이 프로젝트에 넣습니다.
스프라이트가 중간에서 시작하여 오른쪽으로 향하는 화면 중간에 나타납니다.
lightPane에 스프라이트를 추가하는 행을 주석 처리하고 그 아래에있는 행의 주석을 제거한 다음 샘플을 다시 실행하면 필요한 좌표에 스프라이트가 올바르게 표시됩니다.
이것은 분명히 스프라이트의 부모로 사용하고있는 CocosNode와 관련이 있습니다. 아무도 내가 여기서 뭘 잘못하고 있는지 보지 않니?
잘 형성된 질문, 좋은 코드 샘플! +1 – nash