Appearance
RoyComponent: 组件化的基础
在RoySceneNode一节,已经详细的介绍了Object-Component这种场景组织形式,这里针对RoyComponent注意的点来进行介绍。
- 基类本身并没有任何功能,但给出了必要信息的定义,如组件Id、名称、类别等
- 重点关注是几个回调:
- update: 每帧更新回调,注意并不是所有的RoyComponent都接收回调,必须在构造函数或者外部指定该组件需要每帧更新事件时,才会产生该回调事件以达到效率最大化。
- onEnable: RoySceneNode的enable=true时,回调
- onDisable: RoySceneNode的enable=false时,回调
- destroy:当RoySceneNode被销毁,或者RoySceneNode销毁对应RoyComponent时的回调
- onAddToScene:RoySceneNode挂接到场景根节点时,其Componet以及所有子孩子的RoyComponent产生回调
- onRemoveFromScene:RoySceneNode从场景树中移除时,其Componet以及所有子孩子的RoyComponent产生回调
为了方便管理自定义的RoyComponent类型,还有一个RoyCompClassMgr,用来管理RoyComponent类型,这样可以根据类型的字符串动态的创建所需的组件,往往在一个自定义组件被定义后,也要注册到该管理类中,以RoyCameraComponent为例
typescript
export class RoyCameraComponent extends RoyComponent {
// some defination of property and functions.
}
RoyCompClassMgr.registerCompType(RoyCameraComponent);
最后,RoyComponent所提供的组件仅仅时业务逻辑上的组件,可以在不同的项目之间进行复用,但并没有与UI组件结合到一起,在实际的项目中可以将RoyComponent与React组件或者Vue组件结合,进行更高层次的封装,可以在同系列项目中复用这种"高阶组件"。