2012-04-19 30 views
0

精灵我有一个精灵:绕锚点

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

而且我想不断旋转它周围的锚点。我该怎么做?

回答

1

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

[ombreoeuf1 setAnchorPoint:ccp(0,0)] 

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

[ombreoeuf1 setRotation:90] 

anchorPointrotation都是CCSprite的父亲CCNode class的属性。

更新

根据您的意见,似乎你想要的是一个旋转的精灵,从来没有停止?这里是一个让子画面旋转每0.1秒10度的例子:

[sprite runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:0.1 angle:10]]]; 
+0

但是,这是一个简单的旋转。我想要一个无限的旋转动画 – 2012-04-20 08:46:03

+0

@gregrock我已经更新了我的答案。请检查它是否是你想要的? – Hailei 2012-04-20 08:56:57

+0

最后一个问题:我想知道如果使用这种方法,我的精灵可以在旋转时检测触摸事件 – 2012-04-20 09:04:03

0

CCNode子类的所有转换都相对做锚点。在所有转换过程中,anchorPoint将具有相同的位置。例如,如果您将sprite与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]]; 
+0

我明白,但我的问题是关于旋转代码,我可以让它无限旋转? – 2012-04-20 08:54:42