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;
}

我怎么做?

谢谢

4

1 回答 1

6

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

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

精灵的锚点应该是(0.5, 0.5)围绕其中心旋转。

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

看起来你想让你的精灵可触摸。如果您希望实现按钮,请考虑使用CCMenuand 。CCMenuItem


编辑

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

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

                    场景
==============================================
= =
= =
= =
= =
= | =
= | 层(有效无限大小)=
= __|__ =
= | | | =
= | +---|-------------- =
= |_____| =
= 雪碧 =
==============================================
+ 是图层的原点和精灵的中心点
当您围绕其原点旋转图层时,您同时围绕其中心旋转精灵。
于 2012-06-07T09:26:42.100 回答