在我的自定义SKSpriteNode类中,我希望能够在自定义类中更改诸如anchorPoint,posistion等属性,因此我不需要在其他地方。
import Foundation
import SpriteKit
open class Crank:SKSpriteNode {
init() {
super.init(texture: SKTexture(imageNamed: "crank"), color:
NSColor.white, size: CGSize(width: 155.0, height: 188.0))
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我如何编辑其他属性?
答案 0 :(得分:1)
import Foundation
import SpriteKit
class Crank: SKSpriteNode {
init(imageNamed image: String, position at: CGPoint, withAnchor anchor: CGPoint) {
super.init(imageNamed: image)
self.position = position
self.anchorPoint = anchor
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
(从内存写入,因此可能包含小错误,但大致正确)。
然后在主代码中:
let myCrank = Crank(imageNamed: "Crank.png", at: CGPoint(300, 500), withAnchor: CGpointZero)
尽管如此,亚历山德罗有一个观点。我认为设置标准'会更好。属性在正常的地方。
如果要在实际类中设置任何标准SKSpriteNode属性,那么我认为在初始化器中指定它们是一种很好的做法,因为它使m更加可见。调试一个你似乎没有设置节点位置或纹理等的程序会有问题。
答案 1 :(得分:0)
另一种方法是创建一个协议并将其应用于您正在子类化的标准SpriteKit类(或它们的祖先)。
例如:
dd($action);
在项目中的某个地方完成此操作后,您将能够在任何自定义SKNode或SKSpriteNode上访问这些属性,而无需导入SpriteKit。