你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
185*****013
赞同来自: 卡布
小声飞
赞同来自:
nevercai
... let prefab:Laya.Prefab = Laya.loader.getRes(".../xxx"); let soldier = prefab.create() as Laya.Box; // 为了代码提示,转成实际的类型 soldier["show"].play();
... ani_show:Laya.FrameAnimation; onAwake(){ this.ani_show = this.owner["play"] as Laya.FrameAnimation; // 在onAwake中添加播放完成事件,基于某些原因,可能在onDisable的时候被移除,如果发现异常,可以选择在onEnable里面添加事件 this.ani_show.on(Laya.Event.COMPLETE, this, this.onPlayComplete); } attack(callback?:Laya.Handler){ this.ani_show.play(); if (callback) // 甚至可以加上回调 this.ani_show.once(Laya.Event.COMPLETE, this, ()=>{ callback.run(); }); } ... // 外部访问 ... let puzzleSoldier = soldier.getComponent(PuzzleSoldier) as PuzzleSoldier; puzzleSoldier.attack(); ...
该问题目前已经被锁定, 无法添加新回复
3 个回复
185*****013
赞同来自: 卡布
for each(var an:FrameAnimation in arr)
{
if(an.name=="show")
{
an.play();
}
}
小声飞
赞同来自:
比如 var ss:soldieritem =new soldieritem();
ss.show.play(0);
可以添加 监听函数 监听动画播放结束
ss.show.on(Event.COMPLETE, this, onAnimComplete);
good luck:)
nevercai
赞同来自:
在TS下面soldier如果不是any的话,直接使用soldier.show会编译报错。
可以强制转换一下 (<any>soldier).show.play();
值得注意的地方:动画名称最好不要用show(或其他可能存在的方法与属性名字),可能与现有的函数名冲突,最好改成ani_show,以避免未知的BUG。
BTW:看到你绑定了脚本,可以在脚本里面封装这些动作。