Sprite没有出现在场景中

时间:2017-02-03 20:51:43

标签: swift sprite-kit

我创建了一个名为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)
}

1 个答案:

答案 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)

enter image description here