3

SpriteKit用来绘制图表(具有放大和平移的能力)。

当我使用 anSKCropNode来裁剪图形的网格时,它不会裁剪所需的区域。无论我使用矩形SKShapeNode还是SKSpriteNode(带图像)作为.maskNode.

这是我的代码:

    //GRID
    let grid = SKCropNode()
    graphViewModel.graphScene.addChild(grid)

    let ratio:CGFloat = 1000 / 500
    let width = (graphViewModel.sceneSize.width*0.95)
    let newSize = CGSize(width: width, height: width/ratio)

    let origin = CGPoint(x: -newSize.width/2.0, y: 0.0)
    let rectangularMask = SKShapeNode(rect: CGRect(origin: origin, size: newSize))
    rectangularMask.fillColor = UIColor.lightGray
    rectangularMask.zPosition = -10.0 //So it appears behind the grid, doesn't affect the cropping
    grid.maskNode = rectangularMask
    graphViewModel.graphScene.addChild(rectangularMask)

这是两个屏幕截图来说明我的意思:

这是未裁剪其网格的图表。 图表网格未裁剪

这是带有 maskNode 集的图。lightGray 区域是实际rectangularNode的,并且网格被切断的数量比它应该的要少得多。 图形网格裁剪但错误

我的场景被缩放,所以我可以放大而不会像素化。当我禁用缩放(将场景的大小设置为视图的大小)时,错误就会消失。不幸的是,我需要在没有任何像素伪影的情况下进行缩放。

也许有人知道如何解决这个问题。它也可能是 SpriteKit 错误。

4

0 回答 0