03.sprite_kit前瞻之节点树

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?

SKLabelNodeSKLightNodeSKSpriteNodeSKVideoNode等等。看名称Label自然用于绘制标签,Video 自然用于绘制视频,是不是有种各司其职的感觉,换句话说,每一种东西都有一个不同的类来绘制,它们都是继承自SKNode.

时间: 2024-11-29 00:26:33

03.sprite_kit前瞻之节点树的相关文章

05.sprite_kit前瞻之节点的动画

05.Sprite_kit前瞻之节点的动画 注:本文只是前瞻,仅以欣赏角度观看本文.详细内容在之后的文章中提及. 前文提到场景的概念,知道应用中庞大的内容被划分为多个场景呈现,今天更进一步地讨论是场景内容如何动起来,答案是actions.官方文档中提到,每一个action都是由SKAction类定义的对象.首先,我们通知节点(nodes)去执行一系列,之后场景接过众人,处理每一帧的动画(动作在这时候被执行).至于动作的寿命,有些仅仅只执行一帧,而有些则会被多次执行直至完成.通常我们改变节点的属性

04.sprite_kit前瞻之纹理

04.Sprite_Kit前瞻之纹理 专业词汇扫盲: textures:纹理,计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,通常我们更多地称之为花纹. 纹理说白了就是共享的图像,用来渲染精灵(sprites),打个比方呢就是给精灵穿件"衣服".那么什么时候用纹理呢?比如我们要将一张图片应用到多个精灵时,就需要纹理了,试想下无数个精灵身着同一款"衣服".通常我们通过加载存储在应用程序bundl

06.sprite_kit前瞻之创造“真实”的世界

Sprite kit前瞻之创造"真实"的世界 注:本文是前瞻的最后一篇文章,我们的征程即将开启,当我初学swift开始,同样迷茫,同样前途未卜.回想起初的一个月,初识swift的 正文: 前文提及节点树这一概念,俗语说"开枝散叶",想象下,每一次"开枝"就有可能产生多个新的节点,把最初的那个"枝"(孤零零的一根不开叉的树枝)当做根节点,之后"开枝"过程就是在其上增加新的节点,而新的节点回过头来说必定有其父节

Cocos2d之Node类详解之节点树(二)

一.声明 本文属于笔者原创,允许读者转载和分享,只要注明文章来源即可. 笔者使用cocos2d框架的cocos2d-x-3.3rc0版本的源代码做分析.这篇文章承接上篇<Cocos2d之Node类详解之节点树(一)>. 二.简介 节点 一个Node对象. 节点树 上篇文章介绍到,Node类有一个成员变量 Vector<Node*> _children,这是一个保存所有子节点的数组,因为Node类采用遍历树的方式获取子节点进行渲染,所以我管这两个东西的结合叫节点树. 三.源码详解 &

06. 父子节点(树)遍历写法小结

原文:06. 父子节点(树)遍历写法小结 对于树/图的遍历,通常有2种算法来实现:迭代(Iteration)和递归(Recursion),迭代是利用循环反复取值/赋值的过程:递归则是反复自己调用自己来获得最终结果.SQL Server里的递归有32层嵌套限制,目的在于防止代码进入死循环,除非使用提示OPTION (MAXRECURSION 0). 测试数据: if OBJECT_ID('city') is not null drop table city GO create table city

递归遍历节点树

<!DOCTYPE HTML> <html> <head> <title>遍历节点树</title> <meta charset="utf-8"/> <script src="js/3_2.js"></script> </head> <body> <span>Hello World !</span> <ul id=&q

Cocos2d之Node类详解之节点树(一)

一.声明 笔者分析的是用C++语言实现.版本号为cocos2d-x-3.3rc0的cocos2d框架的源代码.本文为笔者原创,允许读者分享和转载,只要读者注明文章来源即可. 二.简介 Node对象时场景图的基本元素,并且场景图的基本元素必须是Node对象和Node的子类对象.常见的Node类的子类有:Scene.Layer.Sprite.Menu和Label类. Node类主要实现几个特性: Node对象的 addChild(Node *child).getChildByTag(int tag)

javaScript DOM节点树

1. 例如: <html> <head> <title>节点树<title/> <head/> <body> <p>学生信息<p/> <ul id ="ul1"> <li>姓名<li/> <li id="sex">性别<li/> <li>年龄<li/> <ul/> <bo

JavaScript之DOM-4 文档结构和遍历(节点树、元素树、文档的遍历)

一.节点树 节点树 概念 - HTML DOM 将 HTML 文档视作树结构 - 文档中的元素.属性.文本.注释等都被看作一个节点 - 这种结构被称为节点树: 上下层节点 - 节点树中的节点彼此拥有层级关系,DOM 使用如下属性遍历整棵节点树: 平行的节点 - 节点树中使用如下方法访问平行的兄弟节点: 二.元素树 元素树 概念 - 元素树是节点树的一个子集,只包含其中的元素节点 上下层元素 - 与节点树一样,元素树上的元素节点也有父子关系,使用如下属性可以获取这些关系: 平行的元素 - 元素树使