我有一个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)
角色的锚点以使其围绕其中心旋转。
我觉得你的程序太复杂了?小时候,你能只使用精灵而不是带有精灵的图层吗?然后你可以直接旋转它。
看起来你想让你的精灵可以触摸。如果要实现按钮,请考虑使用 CCMenu
和 CCMenuItem
s。
编辑
尝试将图层的锚点设置为 (0, 0)
,将精灵的锚点设置为 (0.5, 0.5)
,然后将精灵的位置设置为 (0, 0)
这意味着精灵的中心位于图层的(0, 0)
处,然后围绕其原点旋转图层。
现场============================================== == == == == | == |层(有效无限大小)== __|__ == | | | == | +--|-------------- == |_____| == 精灵 ==============================================+ 是图层的原点和子画面的中心点当您围绕其原点旋转图层时,您同时围绕其中心旋转角色。