gpt4 book ai didi

Swift:使用 SKCropNode 创建四分之一圆不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 06:28:09 25 4
gpt4 key购买 nike

下面的代码无法生成四分之一圆。但是,如果将结束角度更改为 .pi,代码会按预期生成一个半圆。

为什么四分之一圈会失败?

    // Create circle
let circleSize = CGSize(width: width, height: width)
let circle = SKSpriteNode(texture: SKTexture(imageNamed: "Dot.png"), color: color, size: circleSize)
circle.colorBlendFactor = 1.0

// Add circle to crop node
let cropNode = SKCropNode()
cropNode.addChild(circle)

// Set crop node mask
let bezierPath = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: width/2, startAngle: 0, endAngle: .pi/2, clockwise: true)
let maskNode = SKShapeNode(path: bezierPath.cgPath)
maskNode.isAntialiased = false
maskNode.lineWidth = 0
maskNode.fillColor = color
cropNode.maskNode = maskNode

Dot.png(图片为白色,点击下方下载):

Dot.png below (white circle so click on space below)

最佳答案

问题是您只是在绘制圆弧,而 UIBezierPath 通过画一条线回到起点来关闭路径。当您绘制一个半圆时,这是有效的,因为绘制的线是圆的直径。

在四分之一圆的情况下,您最终会得到一个连接两个端点的弦,但这不会给您带来预期的结果。

要解决此问题,请在绘制圆弧后在圆 (0, 0) 的中心画一条线。然后当路径闭合时,它会把另一个半径拉回圆弧的起点。

新bezierPath代码:

let bezierPath = UIBezierPath(arcCenter: CGPoint(x: 0, y: 0), radius: width/2, startAngle: 0, endAngle: .pi/2, clockwise: true)
bezierPath.addLine(to: CGPoint(x: 0, y: 0))

关于Swift:使用 SKCropNode 创建四分之一圆不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com