Skip to content

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组件结合,进行更高层次的封装,可以在同系列项目中复用这种"高阶组件"。