0

我已经为这个问题苦苦挣扎了好几天:我有 CCNode >> StateComponent 并且在 StateComponent 中我有一个 CCSprite 作为属性并将其作为子项添加到 StateComponent 中。当我设置 StateComponent 对象的位置而不是精灵的位置时,StateComponent 对象的边界框出现在正确的位置。精灵位置的默认值设置为 (0,0)。精灵的边界框出现在 (0,0),但精灵纹理从 (0,0) 偏移。之后我将 StateComponent 对象添加到 CCScene。

也许有人可以帮助我建议:如何设置精灵位置,以便纹理和边界框出现在与 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;

}
4

2 回答 2

1

我设法通过将 StateComponent 位置转换为节点空间几次来解决这个问题,因为我实际上有一个带有精灵的 StateComponents 结构的树状结构。

谢谢您的帮助!:)

- -编辑 - -

这篇文章帮助了我,可能很有趣:http ://www.koboldtouch.com/display/IDCAR/Converting+Between+Coordinate+Spaces

于 2014-07-20T22:25:07.320 回答
1

有没有试过把 Node 的 content Size 设置为 Sprite content Size?

-(instancetype) initWithGestureStatewithSprite:(CCSprite*) sprite andPosition: (CGPoint) spritePosition RelativeAngle:(float) angle { 
...
self.contentSize = sprite.contentSize;
...
于 2014-07-16T21:15:57.713 回答