2

作成中のアプリで使用するために、PaintCode ファイルを SKShapeNodes に変換する際に、いくつかのポインターを使用できます。以下に概説するように、私が克服しようとしている特定の問題が 2 つあります。プロジェクトには Xcode 6 beta 4、SpriteKit、Swift、および PaintCode を使用しています。まず、コード:

import UIKit
import SpriteKit

class Ad_disclighttop : SKShapeNode {

    var ovalPath: UIBezierPath = UIBezierPath()
    var oval2Path: UIBezierPath = UIBezierPath()

    init()  {
        super.init()
        drawDisc()
        self.name = "White Disc"
        self.path = ovalPath.CGPath
    }

    //// Initialization

    override class func load() {
    }

    //// Drawing Methods

    func drawDisc() {
        //// General Declarations
        let context = UIGraphicsGetCurrentContext()

        //// Color Declarations
        let xFFFFFF66 = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 0.400)
        let x00000066 = UIColor(red: 0.000, green: 0.000, blue: 0.000, alpha: 0.400)

        //// Gradient Declarations
        let markerTopGradient = CGGradientCreateWithColors(CGColorSpaceCreateDeviceRGB(), [xFFFFFF66.CGColor, x00000066.CGColor], [0.01, 1])

        //// MarkerW_04
        //// Oval Drawing
        ovalPath = UIBezierPath(ovalInRect: CGRectMake(0, 0, 60, 60))
        UIColor.whiteColor().setFill()
        ovalPath.fill()
        x00000066.setStroke()
        ovalPath.lineWidth = 1
        ovalPath.stroke()


        //// Oval 2 Drawing
        oval2Path = UIBezierPath(ovalInRect: CGRectMake(2.5, 2.5, 57, 57))
        CGContextSaveGState(context)
        oval2Path.addClip()
        CGContextDrawRadialGradient(context, markerTopGradient,
            CGPointMake(35.87, 38.3), 20.28,
            CGPointMake(23.16, 25.59), 40.36,
            UInt32(kCGGradientDrawsBeforeStartLocation) | UInt32(kCGGradientDrawsAfterEndLocation))
        CGContextRestoreGState(context)
    }

}

@objc protocol StyleKitSettableImage {
    var image: UIImage! { get set }
}

@objc protocol StyleKitSettableSelectedImage {
    var selectedImage: UIImage! { get set }
}

私が遭遇した最初の問題は、私が生成するほとんどすべての重要な PaintCode ファイルに複数の UIBezierPath が含まれていることです。私の知る限り、SKShapeNode の path プロパティは 1 つのパスしか取りませんが、それらを連鎖させることは可能でしょうか?

2 番目の問題は、グラデーションの色が機能していないように見えることです。

このファイルを実際に SKShapeNode に変換するために私が行ったことは次のとおりです。 1. SpriteKit をインポートします 2. クラス拡張子を NSObject から SKShapeNode に変更します 3. 描画関数の名前を変更します道

この種の変換に関するヒントをいただければ幸いです。ありがとう!

4

1 に答える 1

1

いずれにせよ、グラデーション カラーは SKShapNode ノードでは機能しないため、PaintCode 内から PNG ファイルをレンダリングすることにし、それらを使用して SKSpriteNode を作成します。私が望んでいた解決策ではありませんが、それはそれです。

于 2014-08-14T15:02:49.127 に答える