我一直在努力解决这个问题:我有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;
}
答案 0 :(得分:1)
您是否尝试将节点的内容大小设置为精灵内容大小?
-(instancetype) initWithGestureStatewithSprite:(CCSprite*) sprite andPosition: (CGPoint) spritePosition RelativeAngle:(float) angle {
...
self.contentSize = sprite.contentSize;
...
答案 1 :(得分:1)
我设法通过几次将StateComponent位置转换为节点空间来解决问题,因为我实际上有一个类似于具有精灵的StateComponents结构的树。
感谢您的帮助! :)
--- ---编辑
这篇文章对我很有帮助,可能很有趣:http://www.koboldtouch.com/display/IDCAR/Converting+Between+Coordinate+Spaces