swift SpriteKit SKNode类

时间:2015-07-21 19:01:37

标签: ios swift sprite-kit

我正在从一个教程制作一个平铺游戏,它里面有一些代码:

var tile: SKNode?

    switch tileCode {
        case "g":
            tile = SKSpriteNode(texture: atlas?.textureNamed("grassTile"))

        default:
        println("Unknown tilecode: \(tileCode)")
    }

我很困惑,因为tile被声明为类型SKNode,但在switch语句中它被制作成SKSpriteNode。为什么可以这样做?

1 个答案:

答案 0 :(得分:0)

您仍然可以访问tile作为SKNode,因为它是这样声明的,但它实际上会指向SKSpriteNode个对象。这有效并且编译器没有抱怨的原因是SKSpriteNodeSKNode的子类,即它具有SKNode所具有的所有属性和方法。整个概念称为polymorphism,与dynamic binding强烈相关。