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


Copyright © 2021 - 2025