Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Cocos2d-父节点上的多个精灵不是图层_Iphone_Cocos2d Iphone - Fatal编程技术网

Iphone Cocos2d-父节点上的多个精灵不是图层

Iphone Cocos2d-父节点上的多个精灵不是图层,iphone,cocos2d-iphone,Iphone,Cocos2d Iphone,我试图将一系列精灵放置在一个层上,但由于我希望将所有精灵作为一个组移动,因此我创建了一个CocosNode,将其设置为与屏幕相同的大小,并将其放置在屏幕的中心,然后将精灵添加到该节点(lightNode),而不是将其添加到层中 我看到的是,与我将精灵放置在层中而不是lightNode中时相比,精灵不会出现在正确(相同?)的位置 我使用XCode Cocos2d应用程序模板“Hello World”编写了一个测试程序来显示问题,然后用以下代码替换HelloWorldScene.m中HelloWor

我试图将一系列精灵放置在一个层上,但由于我希望将所有精灵作为一个组移动,因此我创建了一个CocosNode,将其设置为与屏幕相同的大小,并将其放置在屏幕的中心,然后将精灵添加到该节点(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;
}
-(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