super init Sprites与位置不匹配

时间:2012-02-19 17:21:31

标签: iphone cocos2d-iphone

这是一个非常快速的问题。似乎super init有自己的方式来锚定事物。这是一个例子。 下面我有精灵帧“image1”的超级初始化,我在init中有“image2”。问题是,这两个图像不会像你想象的那样相互过度,似乎init'image1'的锚点是0,0和0.5,0.5表示“image2”所以“image1”的左下边缘“将与”image2“的中心相悖。

-(id) initWithSpriteImage
{
    if ((self = [super initWithSpriteFrameName:@"image1.png"]))
    {

        CCSprite *image2=[CCSprite spriteWithSpriteFrameName:@"image2.png"];
    }
    return self;

}

任何想法如何解决这个问题除了删除init精灵?

1 个答案:

答案 0 :(得分:2)

假设image2是image1精灵的子项,您看到的行为是正确的。我希望它有所不同,因为这对于初学者来说是一种非常烦人且难以理解的行为。

发生的事情是子节点不以父节点的anchorPoint为中心,而是在父节点的原点(0,0)上。因此,每个孩子都以父母的左下角为中心,除非父母是非可视节点,如CCScene,CCLayer或CCNode。