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