首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CAShapeLayer和SpriteKit

CAShapeLayer和SpriteKit
EN

Stack Overflow用户
提问于 2017-12-03 06:54:38
回答 1查看 766关注 0票数 1

我试图利用CAShapeLayer中无法在SpriteKit中使用的path动画功能,因此必须将绘制的CAShapeLayer对象与同一视图中的SpriteKit对象组合起来。

坐标系似乎是逆的: CAShapeLayer似乎有+ve轴指向向下,而SKScene则让它指向向上。

下面是一个简单的XCODE游乐场,它试图从0,0到200,100之间画一条黄色的线,然后用一条更厚的红线对它进行阴影。

代码语言:javascript
复制
import SpriteKit
import PlaygroundSupport

let bounds = CGRect(x: 0, y: 0, width: 400, height: 200)
let view = SKView(frame: bounds)
view.backgroundColor = UIColor.lightGray

PlaygroundPage.current.liveView = view

// Create SK Scene
let scene = SKScene(size: CGSize(width: 400, height: 200))
scene.scaleMode = SKSceneScaleMode.aspectFit
view.presentScene(scene);

// Define the path
let path: CGMutablePath = CGMutablePath();
path.move(to: CGPoint(x:0, y:0))
path.addLine(to: CGPoint(x:200, y:100))

// Use CAShapeLayer to draw the red line
var pathLayer: CAShapeLayer = CAShapeLayer()
pathLayer.path = path  
pathLayer.strokeColor = UIColor.red.cgColor
pathLayer.fillColor = nil
pathLayer.lineWidth = 4.0
pathLayer.lineJoin = kCALineJoinBevel
pathLayer.zPosition = 1;
view.layer.addSublayer(pathLayer);

//Use SKShapeNode to draw the yellow line
let pathShape: SKShapeNode = SKShapeNode(path: path);
pathShape.strokeColor = .yellow;
pathShape.lineWidth = 1.0;
pathShape.zPosition = 10;
scene.addChild(pathShape);

我希望黄线和红线重合。而黄线和红线则以镜像的形式出现。

是否需要重新定义CAShapeLayer坐标系,使之指向+ve轴向上?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-03 07:13:19

不,正如在文档中所写的,这就是它的工作方式,您可以逆坐标来匹配您的需求。

雪碧工具包文档

单元坐标系将原点放置在框架的左下角,(1,1)放置在框架的右上角。雪碧的锚点默认为(0.5,0.5),对应于帧的中心。

iOS的其余部分

iOS。默认坐标系的原点位于绘图区域的左上角,正值从它向下延伸到右边。您不能在iOS中更改视图坐标系统的默认方向-也就是说,您不能“翻转”它.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47616047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档