2012-06-07 110 views
0

我有一個CClayer類,當這個類入口時它創建一個應該居中的CCSprite,所以後來,當我旋轉一個用CCLayer類創建的對象時,它圍繞它的中心旋轉。我的意思是,如果該類上的精靈是200像素寬和300像素高的圖像,我希望CCLayer樞軸爲100,150。Cocos2d 2.0 - 將一個精靈集中在一個圖層上

我試圖將它設置爲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; 
} 

我該怎麼做?

感謝

回答

6

在CCLayer子類提供一種方法來旋轉精靈:

-(void) rotateMySpriteToAngle:(float) angle 
{ 
    self.mySprite.rotation = angle; 
} 

精靈的錨點應(0.5, 0.5)將它旋轉圍繞其中心。

我覺得你讓你的程序太複雜了嗎?你可以使用一個精靈而不是一個帶精靈的圖層作爲孩子嗎?然後你可以直接旋轉它。

它看起來好像你想讓你的精靈觸摸。如果您想要實現按鈕,請考慮使用CCMenuCCMenuItem


編輯

嘗試設置該層(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. 
+0

謝謝。我測試了所有選項,在我的情況下最好的是使用CCLayers。問題在於它們不是由中心旋轉。這就像圖像的中心與CCLayer的中心不一致。 – SpaceDog

+1

查看我的編輯。 –

+0

ahhhhhhhhhhhhhhhhhhhhhhhhhhhh現在它旋轉正確!!!!!!!謝謝!!!!小心解釋這些值的邏輯? – SpaceDog

相關問題