尝试将 class 初始化为 SKSpriteNode subclass 并在 GameScene 中使用它时出错 - Swift 2

Error when trying to initialize a class as a SKSpriteNode subclass and use it in GameScene - Swift 2

我遵循的所有教程,制作具有所有功能的 sprite,所有内容都与其他所有内容相同 class - GameScene class。现在我试图将 GameScene 中的代码划分为不同的 classes,但在初始化第一个 class 时遇到了麻烦。因为我几乎没有代码,所以我就全部复制粘贴了。

错误信息:

/Users/Larisa/Desktop/Xcode/Igranje/Poskus2/Poskus2/PlayerUros.swift:17:15: Cannot invoke 'SKSpriteNode.init' with an argument list of type '(texture: SKTexture, position: CGPoint, size: () -> CGSize)'

游戏场景class:

import SpriteKit

class GameScene: SKScene {
  var player: PlayerUros!

  override func didMoveToView(view: SKView) {
    let pos = CGPointMake(size.width*0.1, size.height/2)
    player = PlayerUros(pos: pos)
    addChild(player)
    player.rotate()
    setupBackground()
  }

  func setupBackground() {
    let BImage = SKSpriteNode(imageNamed: "bg-sky")
    BImage.anchorPoint = CGPointMake(0, 0)
    BImage.position = CGPointMake(0, 0)
    BImage.size = CGSizeMake(self.size.width, self.size.height)
    addChild(BImage)
  }
}

玩家class:

import Darwin
import SpriteKit

class PlayerUros: SKSpriteNode {

  init(pos: CGPoint) {
    let texture = SKTexture(imageNamed: "hero")

    super.init(texture: texture, position: pos, size: SKTexture.size(texture))
  }

  func rotate() {
    let rotate = SKAction.rotateByAngle(CGFloat(M_PI), duration: NSTimeInterval(1.5))
    let repeatAction = SKAction.repeatActionForever(rotate)
    self.runAction(repeatAction)
  }

  required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }
}

和 GameViewController class(不确定是否重要):

import UIKit
import SpriteKit

class GameViewController: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    let scene = GameScene(size: view.bounds.size)
    let skView = view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .ResizeFill
    skView.presentScene(scene)
  }

  override func prefersStatusBarHidden() -> Bool {
    return true
  }
}

尝试使用

super.init(texture: texture, color: UIColor.clearColor(), size: texture.size())

而不是

super.init(texture: texture, position: pos, size: SKTexture.size(texture))

在您的播放器中 class。这个对我有用。它对你有用吗?