Archivo de pintura a skshapenode
-
21-12-2019 - |
Pregunta
Podría usar algunos punteros con los archivos de giro de pintura en Skshapenodes para usar en una aplicación que estoy construyendo.Hay dos problemas específicos que estoy tratando de superar, como se describe a continuación.Estoy usando Xcode 6 Beta 4, Spritekit, Swift y Paintcode para el proyecto.Primero, el código:
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 }
}
El primer problema que encuentro es que casi cada archivo de pintura que produce, que no sea más trivial, tiene más de una UIBEZIERPATH en ella.La propiedad del camino de Skshapenode solo puede tomar un camino, por lo que conozco, pero tal vez sea posible encajarlas como?
El segundo problema es que los colores de gradiente no parecen funcionar.
Las cosas que hice con el giro real en un skshapenode fue: 1. Importar Spritekit 2. Cambie la extensión de la clase de NSOBJECT a SKSHAPENODE 3. Cambie el nombre de la función de dibujo. 4. Cree una función de inicio para el nodo de forma que establece el nombre y la ruta
Estoy feliz de recibir cualquier consejo en todo este tipo de conversión.¡Gracias!
Solución
Dado que los colores de gradiente no funcionan de todos modos en los nodos Skshapnode, decidí prestar archivos PNG desde dentro de PointCode, y creo skspritenodes con ellos.No es la solución que esperaba, pero es lo que es.