ios - 从更新函数调用时,自定义 SKShapeNode 未出现在场景中

标签 ios swift

//SpawnBlock 初始化

class SpawnBlock : SKShapeNode {

var timer: Timer?   
init(circleOfRadius radius: CGFloat) {
    super.init()

    self.alpha = 1
    self.zPosition = 2
    self.fillColor = UIColor.blue
    self.strokeColor = UIColor.blue
    self.physicsBody = SKPhysicsBody(circleOfRadius: radius)
    self.physicsBody?.affectedByGravity = false
    self.physicsBody?.categoryBitMask = Collisions.spawnBlock.rawValue
    self.physicsBody?.contactTestBitMask = Collisions.block.rawValue

}

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

//生成函数

func spawnABlock() {
    let spawnBlock = SpawnBlock(circleOfRadius: 10)
    let randomPos = CGPoint(x: CGFloat(arc4random_uniform(UInt32(self.frame.width))), y: CGFloat(arc4random_uniform(UInt32(self.frame.height))))

    print("\(randomPos)")

    spawnBlock.timer = Timer.scheduledTimer(withTimeInterval: 10, repeats: false, block: { (Timer) in
        print("timer done")
        spawnBlock.removeFromParent()
    })
    spawnBlock.position = randomPos
    self.addChild(spawnBlock)

}

override func update(_ currentTime: TimeInterval) {
    count += 1
    print("\(count)")
    if count == maxCount {
        count = 0
        spawnABlock()
    }
}

在模拟器中运行时,节点计数增加,计时器工作并取消初始化 Sprite ,但它们不会出现在场景中。我是否遗漏了什么?

最佳答案

override init() {
    super.init()
}

convenience init(width: CGFloat) {
    self.init()
    self.init(circleOfRadius: width / 2)

    print("initialsed")

    self.alpha = 1
    self.zPosition = 2
    self.fillColor = UIColor.blue
    self.strokeColor = UIColor.blue
    self.physicsBody = SKPhysicsBody(circleOfRadius: width / 2)
    self.physicsBody?.affectedByGravity = false
    self.physicsBody?.categoryBitMask = Collisions.spawnBlock.rawValue
    self.physicsBody?.collisionBitMask = Collisions.block.rawValue
    self.physicsBody?.fieldBitMask = Collisions.noField.rawValue


}

添加这些代码块以在 block 中生成原始初始化函数。

关于ios - 从更新函数调用时,自定义 SKShapeNode 未出现在场景中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44206867/

相关文章:

ios - 在 iOS 应用程序的键盘上仅显示一部分表情符号

ios - 使用自动布局约束以编程方式创建四个具有相同高度和宽度的 UIView

ios - 接近传感器在首次使用后无法正常工作

ios - 将 Xib 与 ScrollView 一起使用 - Swift

android - 使用 phonegap 'captureVideo' 捕获视频后将视频保存到库

iphone - Objective-C : PackageApplication Failed during validation

ios - 我如何指示从 SKScene 使用 UIKit 创建的 View ?

objective-c - 查看 Objc 文件的 swift 界面

c# - 无法确定 Xamarin Forms 应用程序是在模拟器中运行还是在设备上运行

ios - 如何将标签/UIView 固定到 ARKit 中的节点