3

私はSpriteKitグラフを描くために使用しています(ズームインとパンが可能です)。

を使用しSKCropNodeてグラフのグリッドをトリミングすると、目的の領域がトリミングされません。長方形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)

私が言いたいことを説明するための2つのスクリーンショットを次に示します。

これは、グリッドがトリミングされていないグラフです。 グラフ グリッドがトリミングされていません

これは maskNode が設定されたグラフです。lightGray 領域は実際のものrectangularNodeであり、グリッドは必要以上にカットされていません。 グラフ グリッドがトリミングされましたが、正しくありません

シーンは拡大縮小されているため、ピクセル化せずにズームインできます。ズームを無効にすると (シーンのサイズをビューのサイズに設定)、バグは消えます。残念ながら、ピクセルアーティファクトなしでズームする必要があります。

誰かがこの問題を解決する方法を知っているかもしれません。SpriteKit のバグの可能性もあります。

4

0 に答える 0