Swift 我在“中”得到一个错误;fatalError(“init(coder:)尚未实现”);

Swift 我在“中”得到一个错误;fatalError(“init(coder:)尚未实现”);,swift,xcode8,Swift,Xcode8,我找不到解决这个问题的方法,也许我没有正确地实施它。当我运行它时,我只得到一个空白的白色屏幕。我尝试过在这个网站上看到的不同方法,但都不管用。错误突出显示在“fatalError(“init(coder:)尚未实现”)”上。我有什么明显的遗漏吗 import SpriteKit import GameplayKit import CoreMotion class GameScene: SKScene { let gameArea: CGRect override init(size: C

我找不到解决这个问题的方法,也许我没有正确地实施它。当我运行它时,我只得到一个空白的白色屏幕。我尝试过在这个网站上看到的不同方法,但都不管用。错误突出显示在“fatalError(“init(coder:)尚未实现”)”上。我有什么明显的遗漏吗

import SpriteKit
import GameplayKit
import CoreMotion

class GameScene: SKScene {


let gameArea: CGRect

override init(size: CGSize) {

    let maxAspectRatio: CGFloat = 16.0/9.0
    let playableWidth = size.height / maxAspectRatio
    let margin = (size.width - playableWidth) / 2
    gameArea = CGRect(x: margin, y: 0, width: playableWidth, height: size.height)


    super.init(size: size)


 }

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




var Red = SKSpriteNode(imageNamed: "red")
var motionManager = CMMotionManager()
var destX:CGFloat  = 0.0

override func didMove(to view: SKView) {

    let background = SKSpriteNode(imageNamed: "stars")
    background.size = self.size
    background.zPosition = 0
    //background.setScale(1)
    background.position = CGPoint(x: 0, y: 0)
    self.addChild(background)




Red.setScale(0.25)
Red.position = CGPoint(x: 0 , y: -500)
self.addChild(Red)
Red.zPosition = 2




    if motionManager.isAccelerometerAvailable == true {

        motionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler:{
            data, error in

            let currentX = self.Red.position.x

           self.destX = currentX + CGFloat((data?.acceleration.x)! * 100)
        })





if Red.position.x > gameArea.maxX{
Red.position.x = gameArea.maxX
        }
if Red.position.x < gameArea.maxX{
Red.position.x = gameArea.maxX
        }



    }






    }

override func update(_ currentTime: CFTimeInterval) {

    let action = SKAction.moveTo(x: destX, duration: 1)
    self.Red.run(action)
}



func firebullet (){

let bullet = SKSpriteNode(imageNamed: "gul")
bullet.setScale(0.1)
bullet.position = Red.position
bullet.zPosition = 1
self.addChild(bullet)

let moveBullet = SKAction.moveTo(y: self.size.height + bullet.self.size.height, duration: 1)
let deleteBullet = SKAction.removeFromParent()
let Bulletsequence = SKAction.sequence([moveBullet, deleteBullet])
bullet.run(Bulletsequence)




}



override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {



firebullet ()




}
}
导入SpriteKit
导入游戏工具包
导入CoreMotion
类游戏场景:SKScene{
让游戏区:CGRect
重写初始化(大小:CGSize){
设maxAspectRatio:CGFloat=16.0/9.0
让playableWidth=size.height/maxAspectRatio
让边距=(size.width-playableWidth)/2
gameArea=CGRect(x:margin,y:0,width:playableWidth,height:size.height)
super.init(大小:size)
}
必需的初始化?(编码器aDecoder:NSCoder){
fatalError(“初始化(编码者:)尚未实现”)
}
var Red=SKSpriteNode(图像名称:“红色”)
var motionManager=CMMotionManager()
var destX:CGFloat=0.0
覆盖func didMove(到视图:SKView){
let background=SKSpriteNode(图像名为“星星”)
background.size=self.size
background.zPosition=0
//背景.设置刻度(1)
background.position=CGPoint(x:0,y:0)
self.addChild(背景)
红色。设置刻度(0.25)
红色。位置=CG点(x:0,y:-500)
self.addChild(红色)
红色。zPosition=2
如果motionManager.isAccelerometerAvailable==true{
motionManager.startAccelerometerUpdates(到:OperationQueue.current!,withHandler:{
数据错误
设currentX=self.Red.position.x
self.destX=currentX+CGFloat((数据?.acceleration.x)!*100)
})
如果红色.position.x>gameArea.maxX{
红色.position.x=gameArea.maxX
}
如果红色.position.x
我刚刚在操场上测试了你的代码,添加了一些内容,效果很好。退房

而不是

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

我如何修复它的可能重复?再次查看代码,我添加了更多代码,这样就不会脱离上下文。
required init?(coder aDecoder: NSCoder) {
   super.init(coder: aDecoder)
}
required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}