SceneObjectEntity 场景对象实体类
所有实际的场景对象实体都继承此类
拥有特性:
-- 对象开关(存档时系统会自动记录所有场景的对象开关,同时可以影响到出现条件)
-- 添加对象行为(详情参考:SceneObjectBehaviors)
-- 携带自定义事件:如RPG模板中可能拥有点击事件、碰触事件多种触发事件
-- 状态页:根据满足出现条件决定出现的哪一页状态
-- 场景对象模块:可安装多个模块,安装后拥有模块的特性
维护人员:黑暗之神KDS
创建时间:2020-02-22
继承  →SceneObject
子类  无
Public 属性
| 属性 | 
|---|
| EVENT_BEFORE_CHANGE_STATUS_PAGE : string; 静态事件:当切换状态页前,首次创建时不派发该事件。派发对象 SceneObjectEntity 一般用于全局监听所有场景对象的切换状态页事件 | 
| EVENT_BEFORE_CHANGE_STATUS_PAGE_FOR_INSTANCE : string; 静态事件:当切换状态页前,首次创建时不派发该事件。派发对象 Object SceneObjectEntity 一般用于对某个对象监听切换状态页事件 | 
| EVENT_CHANGE_STATUS_PAGE : string; 静态事件:当切换状态页后,首次创建时不派发该事件。派发对象 SceneObjectEntity 一般用于全局监听所有场景对象的切换状态页事件 | 
| EVENT_CHANGE_STATUS_PAGE_FOR_INSTANCE : string; 静态事件:当切换状态页后,首次创建时不派发该事件。派发对象 Object SceneObjectEntity 一般用于对某个对象监听切换状态页事件 | 
| EVENT_ON_ADD_MODULE : string; 静态事件:当附加模块时 派发对象=SceneObjectEntity | 
| EVENT_ON_REMOVE_MODULE : string; 静态事件:当移除模块时 派发对象=SceneObjectEntity onRemoveModule(soe:SceneObjectEntity,soModule:SceneObjectModule) | 
| isDisposed : boolean; 是否已释放 | 
| isCopy : boolean; 只读是否副本 | 
| copyFrom : 只读克隆的来源 sceneID=源场景编号 sceneObjectIndex=源对象编号 | 
| inScene : boolean; 是否在场景上 默认值=false | 
| currentStatusPageIndex : number; 当前对应的状态页面索引 0~N | 
| triggerLines : any; 事件触发线:全部触发器 { triggerLineID: number: CommandTrigger } | 
| triggerSingleLines : any; 事件触发线:单线唯一 { triggerLineID: string: CommandTrigger } | 
| customCommandPages : CommandPage; 场景对象事件页 下标=indexType 0~n | 
| moduleLength : number; 只读获取所有模块的数目 | 
Protected 属性
| 属性 | 
|---|
| behaviors : SceneObjectBehaviors; 行为集,由多个行为组合而成 | 
Public 方法
| 方法 | 
|---|
| getSwitch(varID : number): number 获取对象的开关 | 
| setSwitch(varID : number,  value : number): void 设置对象的开关:存档时系统会自动记录全场景中所有对象的对象开关数据,同时可以影响到出现条件。 | 
| installSwitchs(switchs : number): void 安装开关,一般用于读取数据后一次写入 | 
| getCustomAttrs(): string 获取自定义属性名称集 | 
| addBehavior(behaviorData : any,  loop : boolean,  targetSceneObject : SceneObject,  onOver : Callback,  cover : boolean,  startIndex? : number,  Immediate? : boolean,  forceStopLastBehavior? : boolean,  delayFrame? : number,  executor? : SceneObjectEntity): SceneObjectBehaviors 添加一组行为 | 
| clearBehaviors(): void 清理行为组,清理后对象不在拥有设定的任何行为 | 
| getCommandTrigger(mainType : number,  indexType : number,  scene : Scene,  executor : SceneObjectEntity): CommandTrigger 获取事件触发器:单线事件拿到的是唯一触发器,而多线事件则新生成触发器 | 
| addModule(soModule : SceneObjectModule,  sendEvent? : boolean): boolean 添加模块 | 
| addModuleAt(soModule : SceneObjectModule,  index : number,  sendEvent? : boolean): boolean 添加模块-到指定的位置上 | 
| addModuleByID(moduleID : number,  sendEvent? : boolean): SceneObjectModule 添加模块-根据模块编号 | 
| addModuleByIDAt(moduleID : number,  index : number,  sendEvent? : boolean): SceneObjectModule 添加模块-到指定的位置上-根据模块的编号 | 
| removeAllModules(isDispose? : boolean,  sendEvent? : boolean): void 移除所有模块 | 
| removeModuleByID(moduleID : number,  isDispose? : boolean,  sendEvent? : boolean): SceneObjectModule 移除指定编号的模块 | 
| removeModule(soModule : SceneObjectModule,  isDispose? : boolean,  sendEvent? : boolean): boolean 移除模块-根据其拥有的模块 | 
| removeModuleAt(index : number,  isDispose? : boolean,  sendEvent? : boolean): boolean 移除模块-根据指定的位置 | 
| setModuleIndex(soModule : SceneObjectModule,  toIndex : number): boolean 设置已拥有的模块到指定位置 | 
| setModuleIndexByID(moduleID : number,  toIndex : number): boolean 设置已拥有的模块到指定位置-根据模块编号 | 
| setModuleIndexByIndex(fromIndex : number,  toIndex : number): boolean 调整模块位置 | 
| getModule(moduleID : number): SceneObjectModule 获取已拥有的模块-根据模块编号 | 
| getModuleByName(moduleName : string): SceneObjectModule 获取已拥有的模块-根据模块名称 | 
| getModuleAt(index : number): SceneObjectModule 获取已拥有的模块-根据模块位置 | 
| getModuleIndex(soModule : SceneObjectModule): number 获取已拥有的模块的位置 | 
| getModuleIndexByID(moduleID : number): number 获取已拥有的模块位置-根据模块的编号 | 
详情
EVENT_BEFORE_CHANGE_STATUS_PAGE
EVENT_BEFORE_CHANGE_STATUS_PAGE : string;
静态事件:当切换状态页前,首次创建时不派发该事件。派发对象 SceneObjectEntity 一般用于全局监听所有场景对象的切换状态页事件
      目前仅在服务端使用
// 监听状态页更改时
EventUtils.addEventListenerFunction(SceneObjectEntity, SceneObjectEntity.EVENT_BEFORE_CHANGE_STATUS_PAGE, (soe: SceneObjectEntity) => {
// to do
}, this);
EVENT_BEFORE_CHANGE_STATUS_PAGE_FOR_INSTANCE
EVENT_BEFORE_CHANGE_STATUS_PAGE_FOR_INSTANCE : string;
静态事件:当切换状态页前,首次创建时不派发该事件。派发对象 Object SceneObjectEntity 一般用于对某个对象监听切换状态页事件
      目前仅在服务端使用
// 监听状态页更改时
EventUtils.addEventListenerFunction(soe, SceneObjectEntity.EVENT_BEFORE_CHANGE_STATUS_PAGE_FOR_INSTANCE, (soe: SceneObjectEntity) => {
// to do
}, this);
EVENT_CHANGE_STATUS_PAGE
EVENT_CHANGE_STATUS_PAGE : string;
静态事件:当切换状态页后,首次创建时不派发该事件。派发对象 SceneObjectEntity 一般用于全局监听所有场景对象的切换状态页事件
// 监听玩家的状态页更改时
EventUtils.addEventListenerFunction(SceneObjectEntity, SceneObjectEntity.EVENT_CHANGE_STATUS_PAGE, (soe: SceneObjectEntity) => {
// to do
}, this);
EVENT_CHANGE_STATUS_PAGE_FOR_INSTANCE
EVENT_CHANGE_STATUS_PAGE_FOR_INSTANCE : string;
静态事件:当切换状态页后,首次创建时不派发该事件。派发对象 Object SceneObjectEntity 一般用于对某个对象监听切换状态页事件
// 监听玩家的状态页更改时
EventUtils.addEventListenerFunction(soe, SceneObjectEntity.EVENT_CHANGE_STATUS_PAGE_FOR_INSTANCE, (soe: SceneObjectEntity) => {
// to do
}, this);
EVENT_ON_ADD_MODULE
EVENT_ON_ADD_MODULE : string;
静态事件:当附加模块时 派发对象=SceneObjectEntity
// 监听玩家添加模块时事件
EventUtils.addEventListenerFunction(SceneObjectEntity, SceneObjectEntity.EVENT_ON_ADD_MODULE, (soe:SceneObjectEntity,soModule:SceneObjectModule) => {
// to do
}, this);
EVENT_ON_REMOVE_MODULE
EVENT_ON_REMOVE_MODULE : string;
静态事件:当移除模块时 派发对象=SceneObjectEntity onRemoveModule(soe:SceneObjectEntity,soModule:SceneObjectModule)
// 监听玩家移除模块时事件
EventUtils.addEventListenerFunction(SceneObjectEntity, SceneObjectEntity.EVENT_ON_REMOVE_MODULE, (soe:SceneObjectEntity,soModule:SceneObjectModule) => {
// to do
}, this);
moduleLength
moduleLength : number;
只读获取所有模块的数目
@return number 模块的数目
getSwitch
getSwitch(varID : number): number :
获取对象的开关
参数
varID 对象开关编号 0-N
返回
number
setSwitch
setSwitch(varID : number, value : number): void :
设置对象的开关:存档时系统会自动记录全场景中所有对象的对象开关数据,同时可以影响到出现条件。
参数
varID 对象开关编号 0-N
value 开关值 0/1
installSwitchs
installSwitchs(switchs : number): void :
安装开关,一般用于读取数据后一次写入
getCustomAttrs
getCustomAttrs(): string :
获取自定义属性名称集
返回
string
addBehavior
addBehavior(behaviorData : any, loop : boolean, targetSceneObject : SceneObject, onOver : Callback, cover : boolean, startIndex? : number, Immediate? : boolean, forceStopLastBehavior? : boolean, delayFrame? : number, executor? : SceneObjectEntity): SceneObjectBehaviors :
添加一组行为
参数
behaviorData 行为数据 [[行为1-ID,参数1,参数2],[行为2-ID,参数1,参数2],....]
loop 是否循环
targetSceneObject 参考的目标对象
onOver 当行为结束时回调
cover 覆盖旧的行为
startIndex [可选] 默认值=0 该行为组的开始播放的行为索引,默认0,表示从最开头开始播放
Immediate [可选] 默认值=true 是否立即刷新,否则会等待下一帧才刷新
forceStopLastBehavior [可选] 默认值=false 是否强制停止正在执行的行为,由项目层实现,以便当前行为组能够立即执行
delayFrame [可选] 默认值=0 行为内部的需要等待的帧数
executor [可选] 默认值=null 执行事件者(也是行为派发者)
返回
对象行为处理器
clearBehaviors
clearBehaviors(): void :
清理行为组,清理后对象不在拥有设定的任何行为
getCommandTrigger
getCommandTrigger(mainType : number, indexType : number, scene : Scene, executor : SceneObjectEntity): CommandTrigger :
获取事件触发器:单线事件拿到的是唯一触发器,而多线事件则新生成触发器
同一个触发器表示一条线路执行,所以多线事件新生成触发器则代表一个事件页可以同时执行多次
参数
mainType 0-场景相关的事件类别 1-场景对象相关的事件类别 2-界面相关的事件类别 3-事件库的事件类别 4-片段事件的事件类别 (对应CommandTrigger.COMMAND_MAIN_TYPE_XXX)
indexType 对应的小类别 0-N 如:这是一个场景对象的自定义触发类型事件-“点击事件”
scene 场景
executor 执行者:当前事件的执行者
返回
事件触发器
addModule
addModule(soModule : SceneObjectModule, sendEvent? : boolean): boolean :
添加模块
参数
soModule 模块
sendEvent [可选] 默认值=true 是否添加成功
返回
boolean 是否添加成功
addModuleAt
addModuleAt(soModule : SceneObjectModule, index : number, sendEvent? : boolean): boolean :
添加模块-到指定的位置上
参数
soModule 模块
index 指定的位置
sendEvent [可选] 默认值=true 是否派发事件
返回
boolean 是否添加成功
addModuleByID
addModuleByID(moduleID : number, sendEvent? : boolean): SceneObjectModule :
添加模块-根据模块编号
-- 模块的属性为默认值
参数
moduleID 模块编号
sendEvent [可选] 默认值=true 是否派发事件
返回
SceneObjectModule 被添加的模块,如果不成功则返回null
addModuleByIDAt
addModuleByIDAt(moduleID : number, index : number, sendEvent? : boolean): SceneObjectModule :
添加模块-到指定的位置上-根据模块的编号
参数
moduleID 模块编号
index 指定的位置
sendEvent [可选] 默认值=true 是否派发事件
返回
SceneObjectModule 被添加的模块,如果不成功则返回null
removeAllModules
removeAllModules(isDispose? : boolean, sendEvent? : boolean): void :
移除所有模块
参数
isDispose [可选] 默认值=true 是否销毁模块
sendEvent [可选] 默认值=true 是否派发事件
removeModuleByID
removeModuleByID(moduleID : number, isDispose? : boolean, sendEvent? : boolean): SceneObjectModule :
移除指定编号的模块
参数
moduleID 模块的编号
isDispose [可选] 默认值=true 是否销毁模块
sendEvent [可选] 默认值=true 是否派发事件
返回
SceneObjectModule 被移除的模块,如果不成功则返回null
removeModule
removeModule(soModule : SceneObjectModule, isDispose? : boolean, sendEvent? : boolean): boolean :
移除模块-根据其拥有的模块
参数
soModule 拥有的模块
isDispose [可选] 默认值=true 是否销毁模块
sendEvent [可选] 默认值=true 是否派发事件
返回
boolean 是否移除成功
removeModuleAt
removeModuleAt(index : number, isDispose? : boolean, sendEvent? : boolean): boolean :
移除模块-根据指定的位置
参数
index 指定的位置
isDispose [可选] 默认值=true 是否销毁
sendEvent [可选] 默认值=true 是否派发事件
返回
boolean 是否移除成功
setModuleIndex
setModuleIndex(soModule : SceneObjectModule, toIndex : number): boolean :
设置已拥有的模块到指定位置
参数
soModule 拥有的模块
toIndex 设置到达指定的位置
返回
boolean 是否成功
setModuleIndexByID
setModuleIndexByID(moduleID : number, toIndex : number): boolean :
设置已拥有的模块到指定位置-根据模块编号
参数
moduleID 已拥有的模块的编号
toIndex 设置到达指定的位置
返回
boolean 是否成功
setModuleIndexByIndex
setModuleIndexByIndex(fromIndex : number, toIndex : number): boolean :
调整模块位置
参数
fromIndex 模块的原始位置
toIndex 模块的新位置
返回
boolean 是否成功
getModule
getModule(moduleID : number): SceneObjectModule :
获取已拥有的模块-根据模块编号
参数
moduleID 模块编号
返回
SceneObjectModule 返回拥有的该模块,如果未拥有则返回null
getModuleByName
getModuleByName(moduleName : string): SceneObjectModule :
获取已拥有的模块-根据模块名称
参数
moduleName 模块名称
返回
SceneObjectModule 返回拥有的该模块,如果未拥有则返回null
getModuleAt
getModuleAt(index : number): SceneObjectModule :
获取已拥有的模块-根据模块位置
参数
index 模块位置
返回
SceneObjectModule 返回拥有的该模块,如果未拥有则返回null
getModuleIndex
getModuleIndex(soModule : SceneObjectModule): number :
获取已拥有的模块的位置
参数
soModule 模块
返回
number 已拥有的该模块的位置,如果未拥有则返回-1
getModuleIndexByID
getModuleIndexByID(moduleID : number): number :
获取已拥有的模块位置-根据模块的编号
参数
moduleID 模块编号
返回
number 已拥有的该模块的位置,如果未拥有则返回-1