Круговая полоса загрузки с изображением - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу создать систему достижений в своей игре.Я хочу, чтобы игроки увидели, как у них прогресс в%.

Например, если он набрал 65% -> 75% -> 100%, чтобы выглядеть так.

https://imgur.com/a/P3l6hOQ

Есть ли способ обрезать изображение по кругу, чтобы оно выглядело как круговая полоса прогеса?Приветствуется направление, подсказка, пакет или фрагмент кода.

Мои изображения будут прямоугольниками с закругленными углами, а код написан в SpriteKit.

1 Ответ

0 голосов
/ 27 декабря 2018

удалось решить.Действительно, лучшим и самым простым решением было создать mask_node.

    let button_image : SKSpriteNode = SKSpriteNode()
    let crop_node : SKCropNode = SKCropNode()

    let completion : CGFloat = 0.83  // from 0.0 to 1.0

    let circle_bezier_path = UIBezierPath(arcCenter: CGPoint.zero, radius: 200, startAngle: 0, endAngle: CGFloat.pi * 2 * completion, clockwise: true)
    circle_bezier_path.addLine(to: CGPoint(x: 0, y: 0))

    let mask_node : SKShapeNode = SKShapeNode(path: circle_bezier_path.cgPath)
    mask_node.zRotation = CGFloat.pi/2

    let wrapper_node = SKNode()
    wrapper_node.addChild(mask_node)

    crop_node.maskNode = wrapper_node
    crop_node.addChild(button_image)
    addChild(crop_node)

Удачи!

...