2012-04-19 65 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