精灵我有一个精灵:绕锚点
ombreoeuf1 = [CCSprite spriteWithFile:@"mangeurcentremieu3_03.png" ];
ombreoeuf1.position = ccp(240,160);
[self addChild:ombreoeuf1];
而且我想不断旋转它周围的锚点。我该怎么做?
精灵我有一个精灵:绕锚点
ombreoeuf1 = [CCSprite spriteWithFile:@"mangeurcentremieu3_03.png" ];
ombreoeuf1.position = ccp(240,160);
[self addChild:ombreoeuf1];
而且我想不断旋转它周围的锚点。我该怎么做?
可以首先通过设置属性anchorPoint
,例如设置锚点:
[ombreoeuf1 setAnchorPoint:ccp(0,0)]
然后通过设置另一个属性rotation
设置旋转(以度为单位):
[ombreoeuf1 setRotation:90]
anchorPoint
和rotation
都是CCSprite的父亲CCNode class的属性。
更新
根据您的意见,似乎你想要的是一个旋转的精灵,从来没有停止?这里是一个让子画面旋转每0.1秒10度的例子:
[sprite runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:0.1 angle:10]]];
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]];
我明白,但我的问题是关于旋转代码,我可以让它无限旋转? – 2012-04-20 08:54:42
但是,这是一个简单的旋转。我想要一个无限的旋转动画 – 2012-04-20 08:46:03
@gregrock我已经更新了我的答案。请检查它是否是你想要的? – Hailei 2012-04-20 08:56:57
最后一个问题:我想知道如果使用这种方法,我的精灵可以在旋转时检测触摸事件 – 2012-04-20 09:04:03