我正在使用 cocos2d 开发一个 iphone 应用程序,我在将坐标从父空间转换为子空间时遇到问题。
我有 N 个元素,其中每个元素都有一个位置(0,0 在左上角,而不是在左下角),每个元素都可以有一个父元素。如果元素有父元素,则它的位置在父元素的局部坐标空间中。
例子:
Sprite1 at global position(10,10)
Sprite2 at global position(20,20)
Sprite3 at local position(20,20) and at global position(40,40)
Sprite4 at local position(30,30) and at global position(70,70)
当我添加一个精灵时,我会像这样计算坐标(没有父级):
CCSprite * sprite = [CCSprite spriteWithFile:image];
CGPoint position = [[CCDirector sharedDirector] convertToGL: ccp(element.x, element.y);
sprite.position = position;
由于元素坐标空间从左上角开始,我必须设置锚点:
sprite.anchor = ccp(0,1)
这适用于没有父元素的元素,但是当我添加一个有父元素的元素(使用上面的代码)时,位置是错误的。我怎样才能正确计算坐标(无需遍历所有父母)?
谢谢。