swift SpriteKit SKNode 类

Posted

技术标签:

【中文标题】swift SpriteKit SKNode 类【英文标题】:swift SpriteKit SKNode class 【发布时间】:2015-07-21 19:01:37 【问题描述】:

我正在根据教程制作一个瓷砖游戏,其中包含以下代码:

var tile: SKNode?

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

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

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

【问题讨论】:

SKSpriteNode 是 SKNode 的子类 【参考方案1】:

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

【讨论】:

以上是关于swift SpriteKit SKNode 类的主要内容,如果未能解决你的问题,请参考以下文章

Swift SpriteKit - “尝试添加一个已经有父节点的 SKNode”,同时添加关节

Spritekit 无尽的跑步者父 SKNode

如何在 Swift Playgrounds 中使用带有纹理的 SKNode 设置 SKScene?

SpriteKit iOS 7 Sknode 没有被删除

子类化使用 SpriteKit .sks 场景文件创建的 SKNode

iOS -- SKScene类