Iphone Cocos2d-父节点上的多个精灵不是图层
我试图将一系列精灵放置在一个层上,但由于我希望将所有精灵作为一个组移动,因此我创建了一个CocosNode,将其设置为与屏幕相同的大小,并将其放置在屏幕的中心,然后将精灵添加到该节点(lightNode),而不是将其添加到层中 我看到的是,与我将精灵放置在层中而不是lightNode中时相比,精灵不会出现在正确(相同?)的位置 我使用XCode Cocos2d应用程序模板“Hello World”编写了一个测试程序来显示问题,然后用以下代码替换HelloWorldScene.m中HelloWorld类的-init()方法Iphone Cocos2d-父节点上的多个精灵不是图层,iphone,cocos2d-iphone,Iphone,Cocos2d Iphone,我试图将一系列精灵放置在一个层上,但由于我希望将所有精灵作为一个组移动,因此我创建了一个CocosNode,将其设置为与屏幕相同的大小,并将其放置在屏幕的中心,然后将精灵添加到该节点(lightNode),而不是将其添加到层中 我看到的是,与我将精灵放置在层中而不是lightNode中时相比,精灵不会出现在正确(相同?)的位置 我使用XCode Cocos2d应用程序模板“Hello World”编写了一个测试程序来显示问题,然后用以下代码替换HelloWorldScene.m中HelloWor
-(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;
}
-(id)init
{
if((self=[super init]))
{
//创建包含所有相关精灵的父节点
lightPane=[[CocosNode alloc]init];
CGSize窗格大小={480320};
[lightPane setContentSize:paneSize];
[光窗格设置位置:ccp(240160)];
//将窗格添加到图层
[self-addChild:lightPane z:0];
//添加一系列精灵来演示问题
int y=40;
int x;
对于(x=30;x您希望将lightPane
的位置设置为0,0
。默认情况下,该位置不居中,它位于左下角。请记住,如果您移动到sprite atlas,这将不起作用。除非您移动到新版本的Cocos2d(1.9,测试版).1.9版本将允许您对atlas sprites进行复杂的父项设置。Doh!出于某种原因,我希望CocosNode的行为像一个Sprite-我相信它的锚定点设置在中心??无论哪种方式,您都是对的,它确实需要位于0,0而不是中心。谢谢!或者-我将lightPane节点设置为锚定在0.5,0.5。我可以发誓我之前尝试过这个,但它不起作用。但是,我认为我所做的是将锚点设置为240160,而不是。5,.5-结果表明锚点与内容的大小成比例,而不是绝对点,因此。5,.5表示高度的一半和宽度的一半。我认为精灵有一个居中的锚点位置,因此动作的行为符合预期。例如,想象旋转一个精灵并让它从左下角旋转。结构良好的问题,很好的代码示例!+1