我有个问题。
我创建了GameScene.swift自定义类test.swift,并想从这个类中添加一个sprite到swift
这是我的自定义类
import SpriteKit
import GameplayKit
var scene = GameScene()
class test: SKSpriteNode{
func test_function(){
let mysprite = SKSpriteNode(imageNamed: "spark3")
mysprite.name="sparkle4"
mysprite.position = CGPoint(x: frame.midX, y: frame.midY)
mysprite.setScale(8)
mysprite.zPosition=2
self.scene?.addChild(mysprite)
}
}在GameScene中,我使用以下参数调用此函数
var new_class = test()
new_class.test_function()但是应用程序中没有显示sprite,我看不到任何错误。
如果我直接在GameScene中复制函数,它可以工作。
有人能帮我解决我哪里做错了吗?
非常感谢
发布于 2018-08-02 22:52:37
由于self.scene?在子类中为nil,而它不在GameScene中,因此在将节点作为子节点添加到场景中后,节点将获得分配给它的scene?
self.scene?.addChild(mysprite)//
所以你可以这样做
let tes = test()
self.scene?.addChild(tes)
tes.test_function()发布于 2018-08-02 23:06:47
我会像这样重组这个类:
import SpriteKit
class test: SKSpriteNode {
convenience init(n: String) {
self.init(imageNamed: n)
self.name="sparkle4"
self.setScale(8)
self.zPosition=2
}
override init(texture: SKTexture!, color: UIColor, size: CGSize) {
super.init(texture: texture, color: color, size: size)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}以便您可以更轻松地创建其他实例。然后在GameScene.swift中,执行:
let mySprite = test(n: "spark3")
mySprite.position = CGPoint(x: frame.midX, y: frame.midY)
self.scene?.addChild(mysprite)你会得到一个错误,因为你的函数中的scene是空的,因此它不能被添加到任何场景中。
https://stackoverflow.com/questions/51656485
复制相似问题