0

我有一个精灵:

ombreoeuf1 = [CCSprite spriteWithFile:@"mangeurcentremieu3_03.png" ];
ombreoeuf1.position = ccp(240,160);
[self addChild:ombreoeuf1];

我想不断地围绕一个锚点旋转它。我该怎么做?

4

2 回答 2

1

您可以先通过设置属性来设置锚点anchorPoint,例如:

[ombreoeuf1 setAnchorPoint:ccp(0,0)]

然后通过设置另一个属性来设置旋转(以度为单位)rotation

[ombreoeuf1 setRotation:90]

anchorPoint并且rotation都是CCNode 类的属性,它是 CCSprite 的父类。

更新

根据您的评论,您似乎想要的是一个永不停止的旋转精灵?这是一个让精灵每 0.1 秒旋转 10 度的示例:

[sprite runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:0.1 angle:10]]];
于 2012-04-20T04:46:13.527 回答
0

CCNode 子类的所有变换都是相对于锚点进行的。在所有转换过程中,anchorPoint 将具有相同的位置。例如,如果您将带有anchorPoint (0.f, 0.f) 的精灵放置到屏幕左下角的位置(0.f, 0.f),然后设置它的比例,例如, 5.f,变形后会停留在左下角,只是会变大。所以所有的旋转都会自动相对于锚点进行。

还有一件事。CCSprite 默认具有 anchorPoint (0.5f, 0.5f) 和一些内容大小,因此您只需将其设置为另一个即可查看转换的变化。如果你想用 CCNode 来做,你必须将它的 relativeToAnchorPoint 属性设置为 YES 并手动设置 contentSize。

您可以为此使用 CCRepeatForever 操作。例如,

id rotateAction = [CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration: yourDuration 
                                                                             angle: anyAngleForGivenTime]];
于 2012-04-20T08:45:45.360 回答