2014-07-15 87 views
0

我一直在爲那個問題奮鬥了幾天:我有CCNode >> StateComponent和StateComponent中有一個CCSprite作爲屬性,並將它作爲子組件添加到StateComponent中。當我設置StateComponent對象的位置而不是Sprite的位置時,StateComponent對象的邊界框出現在正確的位置。精靈位置的默認值在(0,0)上設置。精靈的邊界框出現在(0,0),但精靈紋理從(0,0)開始移動。 之後我將StateComponent對象添加到CCScene中。精靈的紋理位置發生了變化[cocos2d v3]

也許有人可以幫助我建議:我如何設置精靈位置,使紋理和邊界框出現在與StateComponent對象相同的位置?稍後,我想檢測節點(精靈)是否有觸摸,然後用精靈旋轉節點。

任何幫助將非常感謝!

@interface StateComponent : CCNode { 

} 
@end 

@implementation StateComponent 

-(instancetype) initWithGestureStatewithSprite:(CCSprite*) sprite andPosition: (CGPoint) spritePosition RelativeAngle:(float) angle { 

    self = [super init]; 

    if (!self) { 
     return nil; 
    } 

    self.sprite = sprite; 
    self.relativeAngle = angle; 
    self.position = spritePosition; 

    [self addChild:sprite]; 
    return self; 

} 

@end 

@interface StateViewScene : CCScene { 

} 
@end 

@implementation StateViewScene 

-(id) init { 
    self = [super init]; 

    if (!self) { 
     return nil; 
    } 

    StateComponent * body = [[StateComponent alloc] initWithGestureStatewithSprite [CCSprite spriteWithImageNamed:@"body.png"] andPosition: CGPointMake(512,384) RelativeAngle:0]; 

    [self addChild:body]; 
    return self; 

} 
+0

張貼相關的代碼中添加文本,你的問題。僅基於描述,不能調試。我猜你可能會將anchorPoint從默認的0.5,0.5改爲。或者,您可能沒有考慮到子節點位置與其父母的位置相關,也許您需要convertToWorldSpace/convertToNodeSpace。還要注意,boundingBox是一個考慮了所有這些方面的屬性,而確定邊界框的自定義代碼可能不是。 – LearnCocos2D

+0

感謝您的回覆!我已經添加了代碼。我不改變定位點。我所做的就是設置節點(StateComponent)的位置。我也嘗試convertToWorldCoordinates,反之亦然,但隨機設置紋理...不幸的是,我不能添加屏幕截圖... – UnhappyStudent

+0

如果我直接添加精靈到場景(但它仍然是StateComponent的屬性),那麼它顯示在正確的位置。 – UnhappyStudent

回答

1

您是否嘗試將節點的內容大小設置爲Sprite內容大小?

-(instancetype) initWithGestureStatewithSprite:(CCSprite*) sprite andPosition: (CGPoint) spritePosition RelativeAngle:(float) angle { 
... 
self.contentSize = sprite.contentSize; 
... 
+0

嗨奧列格,我已經這樣做:)感謝您的建議! – UnhappyStudent