Avatar 行走图显示对象

通过动作、部位、方向、帧来显示当前的图像
-- 支持的方向:1方向、2方向、3方向、4方向、5方向、8方向,其中1、3、5方向素材会自动水平翻转以便节约素材使用
-- 支持辅助体,以便项目层可视化制作动画击中点、不同方向弹道发射点等辅助用的数据
-- 支持换部件(换装)
-- 支持的通用事件:EventObject.LOADED
-- 方向系统参考小键盘以5为中心面向其他数字的方向: 1-左下 2-下 3-右下 4-左 6-右 7-左上 8-上 9-右上
   7 8 9
   4 5 6
   1 2 3
使用方式:
var a = new Avatar();
a.id = 5;
相关事件
 EventObject.LOADED 资源加载完成时候事件
 Avatar.ACTION_PLAY_COMPLETED 动作播放完毕时
 Avatar.CHANGE_ACTION 更改动作时 参数1:更改前的动作ID 参数2:更改后的动作ID
 Avatar.RENDER 当确实到达了新的一帧后派发,本体如果没有实际的帧则不派发

维护人员:黑暗之神KDS
创建时间:2018-12-06

继承 →GameSprite
子类

Public 属性

属性
ACTION_PLAY_COMPLETED : string;
静态事件:动作播放完毕事件,每当该动作播放完一次则抛出此事件,只有最后一帧确实按照帧率播放完毕了才抛出事件
CHANGE_ACTION : string;
静态事件:每当更换动作时派发
RENDER : string;
静态事件:执行 onRender 时派发,当到达了新的一帧后派发该事件
id : number;
AVATAR唯一ID,对应编辑器中的预设制作数据ID,设置后当资源载入完毕后会抛出EventObject.LOADED
syncLoadWhenAssetExist : boolean;
同步加载,当资源存在时,当前帧则立刻显示,默认为true
prerender : boolean;
预渲染:开启此项保证在派发EventObject.LOADED前预先渲染一次以便保证此后能够立即呈现画面,不会因为资源较大而首次渲染卡顿一下
oriMode : number;
只读方向模式 1 2 3 4 5 8 其中1、3、5会自动镜像翻转,来自编辑器中预设
isPlaying : boolean;
只读获取是否处于播放中
isLoading : boolean;
只读获取是否处于加载中,设置id后如果资源未能加载完成则该状态为true
fps : number;
帧率:每秒播放的帧数,比如fps=12则表示每秒播放12帧
fixedOrientation : boolean;
固定朝向,开启此项后忽略更换朝向的请求,即设置orientation无效
refObjs : {
辅助体 id => Helper 默认值={}
helperType : number;
辅助体模式
picUrls : string;
使用到的全部图集,AvatarFrameImage中的index即对应该数组的位置 默认值=
currentFrameImage : AvatarFrameImage;
当前的帧图(如有)
currentFrame : number;
设置和获取当前帧:例如1则表示第一帧
totalFrame : number;
只读总帧数(根据当前动作-方向来计算)
topAvatar : Avatar;
根节点:部件可以使用此项获得自己的根节点,根节点的该属性是根节点自身
orientation : number;
设置朝向,参考小键盘方向,以5为中心面向其他数字的方向:1-左下 2-下 3-右下 4-左 6-右 7-左上 8-上 9-右上
actionIndex : number;
设置动作,根据索引,设置一个无效的动作将忽略此次更改
actionID : number;
设置动作,根据动作ID,设置一个无效的动作将忽略此次更改
actionList : AvatarAction;
只读获取动作列表,必须加载完成才能够获取
selfCenterlineAlignMode : boolean;
根据自身中线对齐模式,启用后部件在该行走图因方向自动水平翻转时根据该行走图的中线对齐而非各自的中线
forceFlip : boolean;
强制水平翻转
PartLength : number;
只读返回部位的个数(包含本体,如果只有本体则返回1)

Public 方法

方法
hasActionID(actionID : number): boolean
是否存在动作
addPartByAvatar(partID : number, part : Avatar, partIndex? : number): boolean
添加部位,根据部件对象,如果该部位已存在则忽略
addPartByID(partID : number, avatarID : number, partIndex? : number): boolean
添加部位:根据指定的部件对应的数据库ID,如果该部位已存在则忽略
removePartByPartID(partID : number, disposeOldPart? : boolean): Avatar
移除部位:根据指定的部位ID
removePartByAvatar(part : Avatar, disposeOldPart? : boolean): boolean
移除部位:根据部件对象
changePartByAvatar(newPart : Avatar, partID : number): boolean
更换部位:根据新的部件和部位ID
changePartByAvatarID(newAvatarID : number, partID : number): boolean
更换部位:根据新的部件对应的数据库ID和部位ID
getPartByPartID(partID : number): Avatar
获取部位:根据部位ID
getPartAt(partIndex : number): Avatar
根据部件所在的位置索引获取部件
getPartByID(avatarID : number): Avatar
根据部位对应的数据库ID获取部件
getPartIndex(avatar : Avatar): number
根据部件获取所在的索引
gotoAndPlay(frame? : number): void
跳转某帧进行播放,越界会自动取模(如帧长度10,播放13则是播放3)
play(): void
在当前帧数开始播放
stop(frame? : number): void
停止播放
hitTestPoint(stageX : number, stageY : number): boolean
像素级点击碰触检测
onRender(autoPlay : boolean, useMapping : boolean, playFrame : number, sendEvent : boolean, forceRender : boolean): boolean
渲染(通常情况下无需主动调用)

详情

ACTION_PLAY_COMPLETED

ACTION_PLAY_COMPLETED : string;

静态事件:动作播放完毕事件,每当该动作播放完一次则抛出此事件,只有最后一帧确实按照帧率播放完毕了才抛出事件

var a = new Avatar();
a.id = 5;
a.on(Avatar.ACTION_PLAY_COMPLETED,this,()=>{
    // to do
});

CHANGE_ACTION

CHANGE_ACTION : string;

静态事件:每当更换动作时派发
onChangeAction(lastActID:number,nowActID:number); lastActID=更改前的动作ID nowActID=更改后的动作ID

var a = new Avatar();
a.id = 5;
a.on(Avatar.CHANGE_ACTION,this,(lastActID:number,nowActID:number)=>{
    // to do
});
a.actionID = 2;

RENDER

RENDER : string;

静态事件:执行 onRender 时派发,当到达了新的一帧后派发该事件

var a = new Avatar();
a.id = 5;
a.on(Avatar.RENDER,this,()=>{
    // to do
});

id

id : number;

AVATAR唯一ID,对应编辑器中的预设制作数据ID,设置后当资源载入完毕后会抛出EventObject.LOADED

var a = new Avatar();
a.on(EventObject.LOADED,this,()=>{
    // to do
});
a.id = 5;

syncLoadWhenAssetExist

syncLoadWhenAssetExist : boolean;

同步加载,当资源存在时,当前帧则立刻显示,默认为true
为了确保能够监听到EventObject.LOADED事件,建议在设置id之前监听该事件

prerender

prerender : boolean;

预渲染:开启此项保证在派发EventObject.LOADED前预先渲染一次以便保证此后能够立即呈现画面,不会因为资源较大而首次渲染卡顿一下
       预渲染会消耗一定的性能,可以选择在行走图资源较大较多的情况下使用此项,开启此项会有额外的性能和内存开销

refObjs

refObjs : {

辅助体 id => Helper 默认值={}
可以使用编辑器预设的各种辅助体信息来制作项目层的一些逻辑

helperType

helperType : number;

辅助体模式
0-统一模式 该模式下的辅助体统一为一个
1-逐帧模式 该模式下的辅助体每一帧都是单独存在的

orientation

orientation : number;

设置朝向,参考小键盘方向,以5为中心面向其他数字的方向:1-左下 2-下 3-右下 4-左 6-右 7-左上 8-上 9-右上
设置一个无效的朝向将忽略此次更改
7 8 9
4 5 6
1 2 3

actionIndex

actionIndex : number;

设置动作,根据索引,设置一个无效的动作将忽略此次更改
@param index 动作索引

actionID

actionID : number;

设置动作,根据动作ID,设置一个无效的动作将忽略此次更改
@param id 动作ID

PartLength

PartLength : number;

只读返回部位的个数(包含本体,如果只有本体则返回1)
需要该行走图加载完毕后才允许使用

hasActionID

hasActionID(actionID : number): boolean :

是否存在动作

参数
actionID 存在的动作ID
返回

boolean

addPartByAvatar

addPartByAvatar(partID : number, part : Avatar, partIndex? : number): boolean :

添加部位,根据部件对象,如果该部位已存在则忽略
需要该行走图加载完毕后才允许使用
添加进来的部件无需手动卸载

参数
partID 部位ID
part 部件
partIndex [可选] 默认值=-1 插入的位置,默认值-1表示自动插入至最上层
返回

boolean 是否添加成功

addPartByID

addPartByID(partID : number, avatarID : number, partIndex? : number): boolean :

添加部位:根据指定的部件对应的数据库ID,如果该部位已存在则忽略
需要该行走图加载完毕后才允许使用
添加进来的部件无需手动卸载

参数
partID 部位ID
avatarID 部件对应的数据库ID
partIndex [可选] 默认值=-1 插入的位置,默认值-1表示自动插入至最上层
返回

boolean 是否添加成功

removePartByPartID

removePartByPartID(partID : number, disposeOldPart? : boolean): Avatar :

移除部位:根据指定的部位ID
需要该行走图加载完毕后才允许使用
可选择是否卸载的参数,「如果未选择自动卸载则需要手动卸载」

参数
partID 部位ID
disposeOldPart [可选] 默认值=true 是否卸载旧部件,如果设置为false则要自行手动卸载
返回

Avatar 部件

removePartByAvatar

removePartByAvatar(part : Avatar, disposeOldPart? : boolean): boolean :

移除部位:根据部件对象
需要该行走图加载完毕后才允许使用
可选择是否卸载的参数,「如果未选择自动卸载则需要手动卸载」

参数
part 部件
disposeOldPart [可选] 默认值=true 是否卸载旧部件,如果设置为false则要自行手动卸载
返回

boolean 是否移除成功

changePartByAvatar

changePartByAvatar(newPart : Avatar, partID : number): boolean :

更换部位:根据新的部件和部位ID
需要该行走图加载完毕后才允许使用
新部件会自动继承原部件的设定(如位置、缩放、色调、透明度等设定)
原部件会自动卸载

参数
newPart 新的部件
partID 部位ID
返回

boolean

changePartByAvatarID

changePartByAvatarID(newAvatarID : number, partID : number): boolean :

更换部位:根据新的部件对应的数据库ID和部位ID
需要该行走图加载完毕后才允许使用
新部件会自动继承原部件的设定(如位置、缩放、色调、透明度等设定)
原部件会自动卸载

参数
newAvatarID 新的部件对应的数据库ID
partID 部位ID
返回

boolean

getPartByPartID

getPartByPartID(partID : number): Avatar :

获取部位:根据部位ID
需要该行走图加载完毕后才允许使用

参数
partID 部位ID
返回

Avatar 部件

getPartAt

getPartAt(partIndex : number): Avatar :

根据部件所在的位置索引获取部件
需要该行走图加载完毕后才允许使用

参数
partIndex 部件所在的索引(索引范围0~PartLength-1)
返回

Avatar 部件

getPartByID

getPartByID(avatarID : number): Avatar :

根据部位对应的数据库ID获取部件
需要该行走图加载完毕后才允许使用

参数
avatarID 部件对应的数据库ID
返回

Avatar 部件,不存在则返回null

getPartIndex

getPartIndex(avatar : Avatar): number :

根据部件获取所在的索引
需要该行走图加载完毕后才允许使用

参数
avatar 部件
返回

number 索引范围0~PartLength-1,不存在则返回-1

gotoAndPlay

gotoAndPlay(frame? : number): void :

跳转某帧进行播放,越界会自动取模(如帧长度10,播放13则是播放3)
@frame 可选 跳转的帧数,默认帧=1,1表示第一帧

play

play(): void :

在当前帧数开始播放

stop

stop(frame? : number): void :

停止播放

参数
frame [可选] 默认值=0 指定停留的帧数

hitTestPoint

hitTestPoint(stageX : number, stageY : number): boolean :

像素级点击碰触检测

参数
stageX 相对舞台的坐标x
stageY 相对舞台的坐标y
返回

boolean 是否点击中

onRender

onRender(autoPlay : boolean, useMapping : boolean, playFrame : number, sendEvent : boolean, forceRender : boolean): boolean :

渲染(通常情况下无需主动调用)
@chancelai autoPlay 可选 默认值=true 自动推进播放
@chancelai useMapping 可选 默认值=true 表示遇到没有的朝向和帧使用映射值
@chancelai playFrame 可选 默认值=null 指定播放帧
@chancelai sendEvent 可选 默认值=true 派发事件
@chancelai forceRender 可选 默认值=false 强制渲染,表示无论是否处于等待间隔中都将进行渲染


Copyright © 2021 - 2025