画一个没有纹理的圆圈

时间:2014-01-13 21:33:41

标签: objective-c macos cocoa sprite-kit

我正在创建一个小游戏,我在尝试绘制一个圆圈时遇到很多问题。我想为osx而不是为iOs做这件事。

使用此代码绘制矩形非常简单。

CGSize posBarraVida;
    posBarraVida.height = 10;
    posBarraVida.width = 100;
    SKSpriteNode* barraVida = [[SKSpriteNode alloc] initWithColor:[SKColor redColor] size:posBarraVida];
    barraVida.position = CGPointMake(self.size.width/8 + 50, self.size.height - 25.0f);
    barraVida.zPosition = 1;
    [self addChild:barraVida];

但我有这个代码画一个圆圈,但我在尝试将NSBezierPath的路径转换为CGPathRef的{​​{1}}属性时遇到错误。

SKShapeNode

2 个答案:

答案 0 :(得分:5)

path上的SKShapeNode属性输入为CGPathRef。这表明您需要使用CGPath对象而不是NSBezierPath对象。在某些情况下,类的Cocoa版本是免费的桥接到“核心”版本,但在这种情况下不是。

相反,你需要类似的东西:

CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, NULL, rect);
circle.path = path;
CGPathRelease(path);

答案 1 :(得分:0)

使用

circle.path = circlePath.bezierPath.CGPath;

而不是

circle.path = circlePath.bezierPath;

我更喜欢使用Bezier Path代替CGMutablePathRef和Sprite Kit。有时使用CGMutablePathRef作为SKPhysicsBody

的路径会出现意外的内存泄漏