Я мог бы использовать несколько указателей для преобразования файлов PaintCode в SKShapeNodes для использования в приложении, которое я создаю. Есть две конкретные проблемы, которые я пытаюсь решить, как описано ниже. Я использую 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 может принимать только один путь, но, возможно, их можно каким-то образом связать?
Вторая проблема заключается в том, что градиентные цвета не работают.
Чтобы превратить этот файл в SKShapeNode, я сделал следующее: 1. импортировал SpriteKit 2. изменил расширение класса с NSObject на SKShapeNode 3. переименовал функцию рисования 4. создал функцию инициализации для узла формы, которая устанавливает имя и дорожка
Я рад получить любые советы по этому типу преобразования. Спасибо!
UIImage
- person Dominique Vial   schedule 17.06.2015