你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
甜豆
赞同来自: 1556109104用户
nevercai
赞同来自:
AerTims
ippon
达尔文
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; // 设置动画是否自动播放 };
要回复问题请先登录
5 个回复
甜豆
赞同来自: 1556109104用户
nevercai
赞同来自:
应该考虑修改设计,为什么需要或许动画下面的节点。是不是可以考虑分成多个动画。
非要访问的话,可以尝试遍历 aniObj["_targetDic"],断点调试一下。
AerTims
赞同来自:
我最终解决方案如下:
在动画做好的情况下直接复制动画生成动画模板,在代码中通过name属性区分动画来实现相同动画不同纹理的效果(play函数第三个参数),这种方法会增加动画文件的大小别的没有影响。
ippon
赞同来自:
而且在2.0里面已经使用场景Scene替代了view和dialog,如果你比较过创建后的Scene、view和dialog,它们的文件后缀都是scene
在场景的层级面板中,你可以选中任意节点,然后右键点击,在弹出菜单中选创建2D-->Animotion,这样就可以直接创建成功了。
然后在属性面板中定义Animotion的name,就可以用getChildByName来调用了。
下面的截图是我项目中的层级关系,你可以参考一下
达尔文
赞同来自: