可视对象


简单来说,所有可见的东西都是可视对象,它可以是图片、精灵、文字、图形,甚至DOM元素等等。一个游戏应用就是由各种各样的可视对象构成的。

继承结构

Hilo采用面向对象的方式构建整个可视对象结构。下面是Hilo中可视对象的继承结构图

Inheritance hierarchy

从此图可以看到,View是可视对象基类,所有可视对象类都要继承此类。Container是容器类,可包含各种子对象,这两个类是最基本的类,其他的类都可由他们派生出来。

当前,Hilo中提供的可视对象类有:

显示结构

Hilo里的可视对象显示结构是一种典型的树形结构。下面是可视对象的显示结构图

Display hierarchy

从此图可以看到,Hilo里的显示结构与HTML DOM树的结构非常类似。其中,View相当于各种各样的HTMLElementStage相当于body(HTMLBodyElement),是根节点和顶层容器;Container则相当于div(HTMLDivElement),他可以包含作为叶子节点的View,也可以包含作为子容器的Container,而子容器Container又可以包含下一层的ViewContainer。这种灵活的显示结构可以形成非常复杂的显示结构,也方便对象管理。

渲染过程

整个渲染过程开始于舞台,当调用舞台Stage的tick方法后,会遍历整个显示结构树,逐个调用可视对象的render方法,而具体的渲染实现则由相应的渲染器Renderer完成。计时器Ticker会按照设定的fps频率不断的重复调用此渲染过程。

Render process

由于渲染器Renderer只会注入到舞台Stage,可视对象只需调用Renderer的统一接口,由此,可视对象就与渲染实现了基本的解耦,通过派生不同的Renderer可以轻松实现不同的渲染模式。