代码之家  ›  专栏  ›  技术社区  ›  SanMu

对子类使用SKSpriteNode的属性

  •  0
  • SanMu  · 技术社区  · 7 年前

    这更像是关于Swift 4中的子类和继承的一般问题。

    在Apple的开发者指南中,自定义类(“anySuperclass”)的子类(“anySubclass”)可以直接访问/继承父类的属性,例如:

    任何子类。anyProperty=xyz(anyProperty仅在超类中定义)

    对于我的问题:

    我目前正在使用SpriteKit开发我的第一个游戏,并希望创建SKSpriteNode的子类,其中一个应该是clBackGround。

    如果我把它定义为SKSpriteNode的一个子类,即。

    class clBackGround:SKSpriteNode {
    }
    

    我认为我可以简单地使用与SKSpriteNode相关的所有属性,如下所示:

    var bg1 = clBackGround()
    
    bg1.size = ...
    .
    .
    .
    

    然而,这似乎不起作用。所以我的问题是:

    我是否需要初始化我想在clBackGround中使用的SKSpriteNode的所有属性(使用指定的初始值设定项)?然后如何将图像分配给该子类的实例?

    任何帮助都将不胜感激!

    1 回复  |  直到 7 年前
        1
  •  0
  •   cc.    7 年前

    不确定这是否是您要问的,但是,一般来说,如果您创建一个对象的子类,您不需要做任何特殊的事情来访问超类的属性。它们将以通常的方式初始化。

    对于SKSpriteNode的子类,如果您为该子类定义了自己的初始值设定项,则该初始值设定项将需要调用指定的超类初始值设定项,该初始值设定项传递用于精灵的纹理、颜色和大小:

    init(enemyType:String) {
        let texture = SKTexture(imageNamed: "enemy_\(enemyType)")
        let color = UIColor.black
        let size = texture.size()
        super.init(texture: texture, color: color, size: size)
    }