cocos creator学习10——骨骼动画

骨骼动画组件

组件属性列表

sp.Skeleton控制面板属性
Skeleton Data骨骼的控制文件.json文件
Default Skin默认皮肤
Animation正在播放的动画
Loop是否循环播放
Premuliplied Alpha是否使用贴图预乘
TimeScale播放动画的时间比例系数
Debug Slots是否显示 Slots的调试信息
Debug Bone是否显示Bone的调试信息

骨骼动画组件方法


常用方法功能
clearTrack(trackIndex)清理对应Track的动画
clearTracks()清除所有 track 的动画状态
setAnimation(trackIndex,“anim_name”,is_loop)清除管道所有动画后,再重新播放
addAnimation(trackIndex,“anim_name”,is_loop)往管道里面添加一个动画

使用示例

通过按钮实现播放不同骨骼动画
骨骼动画播放

实现代码:


 onLoad () {
        var spine = this.node.getChildByName("JXM");
        var ske = spine.getComponent(sp.Skeleton);
        this.ske = ske;
    },

    start () {

    },

    enterclick:function(){
        this.ske.clearTracks();//清理所有播放队列的动画
	    this.ske.setAnimation(0,"in",false);  //in是在Animation的属性列表中的一个
        this.ske.addAnimation(0,"idle_1",true);
    },
    enterclick1:function(){
        this.ske.clearTracks();//清理所有播放队列的动画
        this.ske.setAnimation(0,"err_1",false);
        this.ske.addAnimation(0,"idle_1",true);
    },
    enterclick2:function(){
        this.ske.clearTracks();//清理所有播放队列的动画
        this.ske.setAnimation(0,"ok_1",false);
        this.ske.addAnimation(0,"idle_1",true);
    },

setAnimation()会自动清理管道
addAnimation() 不会清理管道
setAnimation()替换成addAnimation() 运行效果

    onLoad () {
        var spine = this.node.getChildByName("JXM");
        var ske = spine.getComponent(sp.Skeleton);
        this.ske = ske;
    },

    start () {

    },

    enterclick:function(){
        this.ske.clearTracks();//清理所有播放队列的动画
        this.ske.setAnimation(0,"in",false);
        this.ske.addAnimation(0,"idle_1",true);
    },
    enterclick1:function(){
   //     this.ske.clearTracks();//清理所有播放队列的动画
//     this.ske.setAnimation(0,"err_1",false);
	   this.ske.addAnimation(0,"err_1",false); // setAnimation改成addAnimation
        this.ske.addAnimation(0,"idle_1",true);
    },
    enterclick2:function(){
    //    this.ske.clearTracks();//清理所有播放队列的动画
        this.ske.setAnimation(0,"ok_1",false);
        this.ske.addAnimation(0,"idle_1",true);
    },
    // update (dt) {},
});

运行效果
可以看出如果直接addAnimation() 它会在其他骨骼动画播放完后才开始播放它对应的骨骼动画

骨骼动画事件监听

监听方法触发条件
setStartListener(listener)用来设置开始播放动画的事件监听
setEndListener(listener)用来设置动画播放完后的事件监听
setCompleteListener(listener)用来设置动画播放一次循环结束后的事件监听
 start () {
        this.ske.setAnimationListener(function(){
            cc.log("动画开始播放的事件");
        });
        this.ske.setEndListener(function(){
            cc.log("setEnd");
        });
        this.ske.setCompleteListener(function(){
            cc.log("play_once");
        });
    },

监听效果

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值