swift - initWithSize 在 Objective-C 中触发,但在 Swift 中不触发

标签 swift sprite-kit skscene

我有一个用 Swift 编写的非常简单的 SKScene,它不会被触发:

override init(size: CGSize) {
    super.init(size: size)
    backgroundColor = SKColor.whiteColor()
    var bg = SKSpriteNode(imageNamed: "myBackground")
    bg.position = CGPoint(self.size.width/2, self.size.height/2)

    self.addChild(bg)
}

我已经在 Objective-C 中尝试了相同的代码,并且可以毫无问题地调用它,所以我想知道他们是否在 Swift 中使用 initWithSize 更改了某些内容,以及我是否遗漏了一些关键内容。

注意:SKScene 会被触发,只有这个函数不会。

谢谢!

最佳答案

In **GameViewcontroller** viewDidLoad(), Make sure your calling like this
   let skView = self.view as SKView

   let scene = **GameScene.init(size:skView.bounds.size)**
   skView.showsFPS = true
   skView.showsNodeCount = true

   /* Sprite Kit applies additional optimizations to improve rendering performance */
   skView.ignoresSiblingOrder = true

   /* Set the scale mode to scale to fit the window */
   scene.scaleMode = .AspectFill

   skView.presentScene(scene)


**GameScene.swift**

**init(size: CGSize)** is parameterized constructor. So you have to call it manually.

override init(size: CGSize) {
 super.init(size: size)
 backgroundColor = SKColor.whiteColor()
 var bg = SKSpriteNode(imageNamed: "myBackground")
 bg.position = CGPoint(x: self.size.width/2, y: self.size.height/2)

 self.addChild(bg)
}

required init?(coder aDecoder: NSCoder) {
 super.init(coder: aDecoder)
}

关于swift - initWithSize 在 Objective-C 中触发,但在 Swift 中不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144912/

相关文章:

swift - 计算圆边 Swift SpriteKit 两点之间的角度

Objective-C SpriteKit 创建到某些点的虚线

ios - 使用 Swift 获取 SKScene 的宽度和高度

ios - 如何使用自动布局相对于 UIView 高度移动 UILabel?

arrays - 无法将任何数组类型传递给以 [Any] 作为参数的函数

ios - 即使从 Facebook 应用程序设置中删除应用程序后,用户仍可以访问应用程序

ios - 如何在 SpriteKit 中获得类似于 peek 或 pop 的 3d touch 应用程序图标触觉反馈

ios - 无法使用 Xcode 8 和 Swift 3 以编程方式在 SpriteKit 中触发 segue

swift - 场景大小内的节点位置

ios - Swift:在 touchesBegan 中使用 switch 语句