我一直在研究苹果新的Sprite Kit,并且已经使用它有一段时间了。
然而,当我尝试为SKShapeNode
绘制曲线路径时,我遇到了一个问题。它似乎只会画一条直线。
这里是我遇到问题的一个非常简单的例子 - 尝试用CGPath
为SKShapeNode
绘制:
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);
CGPathAddLineToPoint(path, NULL, 50, -100);
CGPathCloseSubpath(path);
SKShapeNode *shape = [[SKShapeNode alloc]init];
shape.path = path;
[self addChild:shape];
CGPathRelease(path);
这是我的ASCII艺术作品,展示了它正在做什么(抱歉我没有足够的声望来发布实际图片):
---------------------------------------------------------------------------------
| EXPECTED RESULT | ACTUAL RESULT |
---------------------------------------------------------------------------------
| | |
| __----__ | |
| / \ <- Curve | ? |
| / \ | ____________ |
| \ / | \ / |
| \ / | \ / |
| \ / | \ / |
| \ / | \ / |
| \ / | \ / |
| \/ | \/ |
---------------------------------------------------------------------------------
正如你所看到的,这行代码并未绘制出我想要的曲线:
CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);
我尝试使用CGPathAddArcToPoint(...)
,它有效,并且在这个示例中是一个很好的替代品。但是,对于我的实际需求,我需要能够绘制二次曲线。除了
CGPathAddQuadCurveToPoint(...)
和CGPathAddCurveToPoint(...)
,CGPath似乎在正确地绘制其他所有内容,但它们只是在点之间绘制一条直线。有人知道问题是什么吗?或者这是Sprite Kit的一个错误吗?