【发布时间】:2009-12-12 05:50:52
【问题描述】:
我试图在一个图层上放置一系列精灵,但由于我想将所有精灵作为一个组移动,我创建了一个 CocosNode,将其设置为与屏幕相同的大小并将其放置在屏幕中心,然后将 Sprites 添加到该节点 (lightNode) 而不是将它们添加到图层。
我看到的是精灵没有出现在正确的(相同的?)位置,与我将它们放置在一个图层中而不是在 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
标签: iphone cocos2d-iphone