我想在我的精灵工具包游戏中画一条虚线,我可以使用 SKShapeNode 节点画一条法线,如下所示:
UIBezierPath *_path=[UIBezierPath bezierPath];
//1
CGPoint point1 = CGPointMake(100,100);
CGPoint point2 = CGPointMake(150,150);
[_path moveToPoint:point1];
[_path addLineToPoint:point2];
//2
SKShapeNode *line = [SKShapeNode node];
line.path = _path.CGPath;
我试图为 UIBezierPath 设置一个虚线模式,如下所示:
// adding this code at location 1 or 2 above but no effect
CGFloat dashes[] = {6, 2};
[_path setLineDash:dashes count:2 phase:0];
但不应用虚线图案。
我还尝试直接从 UIBezierpath.CGPath 属性创建 CGPath 的虚线副本,如下所示:
CGFloat dashes[] = {6, 2};
CGPathRef aCGPath= CGPathCreateCopyByDashingPath(_path.CGPath,NULL,0,dashes,2);
line.path = aCGPath;
但也一样。
如果有人可以解释问题出在哪里,以及如何通过将虚线 cgpath 应用于 skshapenode 来在两点之间绘制虚线,我真的很感激。
编辑:我知道对于这个简单的示例,我可以将这两个点之间的距离划分为小的固定距离,并通过 bezeirpath 移动和绘制虚线,但考虑到点来自触摸的徒手路径,重绘非常复杂且效率低下具有固定长度点的路径然后绘制破折号。我想知道是否有办法将虚线图案应用于路径并使 skshapenode 使用它,这是我的问题。