Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在swift中对子类进行子类化(skspritenode)_Swift_Sprite Kit_Sprite_Subclass_Skspritenode - Fatal编程技术网

在swift中对子类进行子类化(skspritenode)

在swift中对子类进行子类化(skspritenode),swift,sprite-kit,sprite,subclass,skspritenode,Swift,Sprite Kit,Sprite,Subclass,Skspritenode,我目前正在制作一个游戏,将有多种类型的敌人,我目前使用一个SKSpriteNode的子类制作了基本的敌人,一切都很好。我现在想实现基本敌人的另一个子类,因为所有敌人都是相似的。我在创建新的子类时遇到问题。任何帮助都将不胜感激。这是我的密码 class Basic_Fighter : SKSpriteNode { var health : Int = 3 var ship_speed : Double = 7.0 var bullet_rapidness : Doubl

我目前正在制作一个游戏,将有多种类型的敌人,我目前使用一个SKSpriteNode的子类制作了基本的敌人,一切都很好。我现在想实现基本敌人的另一个子类,因为所有敌人都是相似的。我在创建新的子类时遇到问题。任何帮助都将不胜感激。这是我的密码

class Basic_Fighter : SKSpriteNode  {

    var health : Int = 3
    var ship_speed : Double = 7.0
    var bullet_rapidness : Double = Double ((arc4random_uniform(3) + 2) )
    var bullet_speed : Double = 3.0
    var action = SKAction()
    var bullet_Timer : NSTimer?


    func subtract_health(){ health-- }

    func enemy_killed(){
        let action = SKAction.moveToY(-1000, duration: 5)
        self.runAction(SKAction.repeatActionForever(action))
        let rotateAction = SKAction.rotateByAngle(CGFloat(M_PI), duration: 3)
        self.runAction(SKAction.repeatActionForever(rotateAction))

        //Set a timer to destoy the node
        _ = NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector("destroy"), userInfo: nil, repeats: false)

    }

    func destroy(){
        self.removeFromParent()
    }
}
下一个敌人

class new_fighter : Basic_Fighter  {

    convenience init(){
        self.init()
        health = 5
    }
}

我不确定你到底问了哪个问题,但这部分是错的:

class new_fighter : Basic_Fighter  {
    convenience init(){
        self.init()
        health = 5
    }
}
如果没有指定的初始值设定项,则不能按原样声明便利初始值设定项。也许您应该重新访问Swift语言参考,了解有关指定初始值设定项与方便初始值设定项的部分

从:

。。。Swift对初始值设定人之间的委托调用适用以下三条规则:

规则1

指定的初始值设定项必须从其直接超类调用指定的初始值设定项

规则2

方便的初始值设定项必须调用同一类中的另一个初始值设定项

规则3

方便的初始值设定项必须最终调用指定的初始值设定项


当您将SKSPriteNode子类化时,必须使用指定的初始值设定项:

init(texture: SKTexture?, color: UIColor, size: CGSize)

在方便的初始值设定项调用中:
self.init(纹理:纹理,颜色:颜色,大小:大小)

您遇到了什么问题?问题中没有对您进行描述,因此无法工作