【发布时间】:2017-02-26 08:06:23
【问题描述】:
我想制作一个 SKView,我可以将其用作工厂来制作 SKShapeNode 并将它们“渲染”为纹理。
但我找不到如何初始化这样的东西,而且我一点运气都没有。
如何为此目的制作独立的 SKView?
或者有没有更好的方法来避免使用游戏场景?
这是我在制造工厂时所做的徒劳,这抱怨纹理(来自:)不明确。我不知道那是什么意思。
import SpriteKit
class Make: SKView{
static func circle() -> SKSpriteNode {
let myShapeNode = SKShapeNode(circleOfRadius: 100)
myShapeNode.fillColor = SKColor.lightGray
myShapeNode.strokeColor = SKColor.gray
let tex = texture(from: myShapeNode)
return SKSpriteNode(texture: tex)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
更新
在谷歌上浪费了更多时间后,我尝试搜索 UIView 的初始化,并找到并添加了这段代码,它初始化为一个看似虚构的框架......但它有效!不知道为什么……但是我不能把它作为工厂方法,只能作为实例方法,这样:
import Foundation
import SpriteKit
class Make: SKView{
// added randomly found UIView initialisation "code"...
override init(frame: CGRect) {
super.init(frame: frame)
}
func circle() -> SKSpriteNode {
let myShapeNode = SKShapeNode(circleOfRadius: 100)
myShapeNode.fillColor = SKColor.lightGray
myShapeNode.strokeColor = SKColor.gray
let tex = texture(from: myShapeNode)
return SKSpriteNode(texture: tex)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
【问题讨论】:
-
我认为从 SKView 派生这个是没有意义的。如果你的 GameScene 有一个基类,那么将它作为一个方法会更合适。
标签: sprite-kit skshapenode sktexture skview