Cocos2d 2.0 - 将精灵居中放在图层上



我有一个CClayer类,当这个类启动时,它会创建一个应该居中的CCSprite,所以后来,当我旋转使用该CCLayer类创建的对象时,它会围绕其中心旋转。我的意思是,如果该类上的精灵是宽 200 像素、高 300 像素的图像,我希望 CCLayer 枢轴为 100,150。

我试图将其设置为 0,0 和 0.5,

0.5,但没有成功。

据我了解,CCLayer 没有边界框,它就像一种节点,对吧? 所以,我像这样创建类:

-(id) initWithImage:(UIImage*)image Name:(NSString*)name
{
    if( (self=[super init])) {
        self.isTouchEnabled = YES;
        self.mySprite = 
            [CCSprite spriteWithCGImage:image.CGImage key:name];
        self.mySprite.position = CGPointZero;
        [self addChild:self.mySprite];
        self.mySprite.anchorPoint = ccp(0.0f, 0.0f);
        // have tried also 0.5f, 0.5f... no success        
    }
    return self;
}

我该怎么做?

谢谢

在 CCLayer 子类中提供一个方法来旋转精灵:

-(void) rotateMySpriteToAngle:(float) angle
{
    self.mySprite.rotation = angle;
}

(0.5, 0.5)角色的锚点以使其围绕其中心旋转。

我觉得你的程序太复杂了?小时候,你能只使用精灵而不是带有精灵的图层吗?然后你可以直接旋转它。

看起来你想让你的精灵可以触摸。如果要实现按钮,请考虑使用 CCMenuCCMenuItem s。


编辑

尝试将图层的锚点设置为 (0, 0),将精灵的锚点设置为 (0.5, 0.5) ,然后将精灵的位置设置为 (0, 0)

这意味着精灵的中心位于图层的(0, 0)处,然后围绕其原点旋转图层。

                    现场==============================================                                           ==                                           ==                                           ==                                           ==       |                                  ==       |层(有效无限大小)==     __|__                                 ==    | | |                               ==    | +--|--------------                  ==    |_____|                               == 精灵 ==============================================+ 是图层的原点和子画面的中心点当您围绕其原点旋转图层时,您同时围绕其中心旋转角色。

最新更新