Sprite Kit前瞻之节点树
本文仅是前瞻,只需抱着欣赏态度阅读即可。
SKScene
类继承自 SKNode
类,SKNode
类继承自UIResponder
类。谈完继承关系,我们来说说节点(Node
),当我们使用 Sprite Kit
框架时,节点是所有内容的基本构建块,同时场景( scene
)对象扮演着节点树的根节点角色。场景和它的后代决定了绘制什么内容以及如何渲染。
在由父类定义的坐标系中,每一个节点的位置都是明确定义的。同时,节点也适用于其他属性到自身内容和它后代的内容。举个例子,当一个节点进行了旋转,那么所有它的后代都将被旋转,这很好理解:比如有一个对象A作为父类,拥有几种属性,那么B继承了A,自然就拥有了那些属性,然而假如有对象C继承了B,这时候C因为继承关系也会拥有A的那几种属性!这有什么用?比如我们通过节点树创建一个复杂的 image
节点( node
),通过调整在它上面的节点属性来进行旋转、放缩以及混合整个图像。
强调:SkNode
类不绘制任何东西,但是它可以将自身属性传递给它的后代。在 Sprite Kit
框架中,每一种可绘制的内容都将单独由一个明确地子类来表示,其他节点尽管不绘制内容,但是通过调整自身属性来修改其后代。举例来说,你可以通过SKEffectNode
类增加一个图像过滤功能使得继承自它的 SKScene
类都拥有该功能。通过精确控制节点树的结构,能够明确控制节点渲染顺序。
方才说到,SKNode
类继承自UIResponder
或者 NSResponder
,因此只要是继承自 SKNode
类的新类都能接收用户的输入。视图( View
)类自动扩展响应链将节点加入到场景的节点树。
补充:
1. 有哪些继承自
SKNode
?
SKLabelNode
、SKLightNode
、SKSpriteNode
、SKVideoNode
等等。看名称Label
自然用于绘制标签,Video
自然用于绘制视频,是不是有种各司其职的感觉,换句话说,每一种东西都有一个不同的类来绘制,它们都是继承自SKNode
.