let skillPNGLoaded = function() {
// 根据动画配置文件读取图集中的位图切片,根据不同类型的配置文件,根据配置文件结构修改
let skillAniArray = [];
for(let i in aniProps.mc[options.srcName].frames) {
let skill = new Laya.Sprite(); // 创建一个用于存放位图数组的临时精灵
let texture = Laya.loader.getRes(options.srcPath+options.srcName+".png"); // 读取图集生成大切片
let textureIns = Laya.Texture.create(texture,
aniProps.res[aniProps.mc[options.srcName].frames[i].res].x,
aniProps.res[aniProps.mc[options.srcName].frames[i].res].y,
aniProps.res[aniProps.mc[options.srcName].frames[i].res].w,
aniProps.res[aniProps.mc[options.srcName].frames[i].res].h,
); // 从大切片切出小切片
skill.graphics.drawTexture(textureIns,aniProps.mc[options.srcName].frames[i].x,aniProps.mc[options.srcName].frames[i].y); // 将小切片渲染到临时精灵上
skillAniArray[i] = skill._graphics._one; // 储存渲染后的小切片备用
Laya.timer.once(10, this, function () {
try{
ani._frames[i]._one = skillAniArray[i]; // 将渲染后的小切片追加到动画中
}catch(e) {
console.log('warning: animation in loading'); // 过于频繁加载动画时给予警告
}
})
}
ani.interval = Math.round(1000/aniProps.mc[options.srcName].frameRate); // 设置动画的帧率
ani.autoPlay = options.autoPlay; // 设置动画是否自动播放
};
给个hack参考,只要相同帧数的一种动画类型定义一个.ani就行了,比如roleWeapon_8f.ani(玩家武器的8帧动画),每帧的图片可以用一个透明文件占个位。