我创建了一个名为Player的SKShapeNode子类:
import UIKit
import SpriteKit
let MOVE_UP: CGFloat = 3
class Player: SKShapeNode{
var lifePoints = 3
init(circleOfRadius: CGFloat, fillColor: UIColor, strokeColor: UIColor) {
super.init()
self.fillColor = fillColor
self.strokeColor = strokeColor
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
class func movePlayerUp(mPlayer: SKShapeNode){
mPlayer.position.y += MOVE_UP
}
}
在GameScene
我尝试创建Player
类型的精灵并在屏幕上显示。
我没有错误,构建不会失败,但精灵不会出现在屏幕上。
这就是我创建精灵的方式:
override func didMove(to view: SKView) {
let sprite = Player(circleOfRadius: 45, fillColor: myColors.blue, strokeColor: myColors.yellow)
sprite.position = CGPoint(x: frame.midX, y: frame.midY)
self.addChild(sprite)
}
答案 0 :(得分:0)
问题是你的super.init()
...它是空白的...你用自己的婴儿车circleOfRadius
制作了自己的初始值设定项,但这对计算机没有任何意义,因为你什么也没做/ em>的
更糟糕的是,super.init(circleOfRadius: circleOfRadius)
无法正常工作,因为它不是指定的初始化程序 ...它是便利初始化程序,您可以'在调用 super.init
所以,基本上你必须使用super.init()
然后*改变你刚刚制作的空形状的路径。
添加此项,您将获得您的圈子:
self.path = CGPath.init(roundedRect: CGRect(x: 0, y: 0, width: circleOfRadius*2, height: circleOfRadius*2), cornerWidth: 45, cornerHeight: 45, transform: nil)