我有一个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;
}
我该怎么做?
感谢
答案 0 :(得分:6)
在CCLayer子类中提供一个旋转精灵的方法:
-(void) rotateMySpriteToAngle:(float) angle
{
self.mySprite.rotation = angle;
}
精灵的定位点应为(0.5, 0.5)
,以围绕其中心旋转。
我觉得你的节目太复杂了吗?你可以使用精灵而不是一个带有精灵的图层作为孩子吗?然后你可以直接旋转它。
看起来好像你想让你的精灵可以触摸。如果您要实现按钮,请考虑使用CCMenu
和CCMenuItem
。
尝试将图层的锚点设置为(0, 0)
,将精灵的锚点设置为(0.5, 0.5)
,然后将精灵的位置设置为(0, 0)
这意味着精灵的中心位于图层上的(0, 0)
,然后围绕它的原点旋转图层。
Scene ============================================= = = = = = = = = = | = = | Layer (effective infinite size) = = __|__ = = | | | = = | +--|-------------- = = |_____| = = Sprite = ============================================= The + is the origin of the layer and the center point of the sprite When you rotate the layer around it's origin, you are simultaneously rotating the sprite about it's centre.