cocos creator 使用并设置Animation的循环次数、播放速度

本文详细介绍了如何使用Cocos2d-x游戏引擎控制动画的播放速度、循环次数及获取动画状态信息的方法。通过实例展示了动画组件的使用,包括设置动画速度、播放次数,以及如何获取动画的名称、速度、总时长等关键属性。

cocos 设置Animation的循环次数、播放速度


动画的Wrapmode可以是任何模式:Default、Normal、Loop、PingPong

  • 先准备预制资源pGoldEffect,然后克隆并添加进父类内

    let effect: cc.Node = cc.instantiate(this.pGoldEffect);
    this.gRoot.addChild(effect);
    
  • 然后获动资源中的Animation组件

    let anim: cc.Animation = effect.getComponent(cc.Animation);
    
  • 接下来就是获取AnimationState

    • 设置动画的速度

      let state: cc.AnimationState = anim.play("animationName");	//如果不写组名就播放默认的动画
      // let state: cc.AnimationState = anim.getAnimationState("animationName");		//第二种方式获取
      state.speed = 3;
      
    • 设置播放次数

      state.repeatCount = 1;
      

附:可以通过下面的获取动画的各信息

var anim = this.getComponent(cc.Animation);
var animState = anim.play('test');

// 获取动画关联的clip
var clip = animState.clip;

// 获取动画的名字
var name = animState.name;

// 获取动画的播放速度
var speed = animState.speed;

// 获取动画的播放总时长
var duration = animState.duration;

// 获取动画的播放时间
var time = animState.time;

// 获取动画的重复次数
var repeatCount = animState.repeatCount;

// 获取动画的循环模式
var wrapMode = animState.wrapMode

// 获取动画是否正在播放
var playing = animState.isPlaying;

// 获取动画是否已经暂停
var paused = animState.isPaused;

// 获取动画的帧率
var frameRate = animState.frameRate;

维尼聚合工具


Cocos Creator中,判断`cc.Animation`是否正在播放可以通过以下两种方式实现: ### 方式一:使用`currentClip`属性 可以通过判断`cc.Animation`的`currentClip`属性是否存在,以及当前播放动画剪辑名称是否与目标动画名称一致来判断动画是否正在播放。示例代码如下: ```javascript _playerPlayAction: function (name) { var anim = this._player.getChildByName("anim").getComponent(cc.Animation); if (anim.currentClip && anim.currentClip.name == name) { return; } anim.play(name); } ``` 在上述代码中,`if (anim.currentClip && anim.currentClip.name == name)`语句用于判断当前是否有正在播放动画剪辑,且该动画剪辑的名称是否与传入的`name`一致。如果一致,则说明该动画正在播放 [^2]。 ### 方式二:使用`getAnimationState`方法 可以通过`getAnimationState`方法获取动画状态,然后判断动画状态的`_isPlaying`属性来确定动画是否正在播放。示例代码如下: ```javascript // 点击播放动画 btnClick: function () { // 获取动画状态 this.isPlaying = this.anim.getAnimationState("anim1")._isPlaying; // 获取声音状态 this.isPlaying = this.audio.isPlaying; if (this.isPlaying == false) { // 播放动画 this.anim.play(); // 播放声音 this.audio.play(); // 改变label this.number++; this.font.string = this.number; // 获取坐标 var pos = this.fontNode.getPosition().y; // 让节点左右来回移动 this.font.parent = this.fontNode; var seq = cc.sequence(cc.moveTo(0.3, 0, 440), cc.moveTo(0.3, 0, 420)); this.fontNode.runAction(seq); } } ``` 在上述代码中,`this.isPlaying = this.anim.getAnimationState("anim1")._isPlaying;`语句用于获取名为`anim1`的动画状态,判断其`_isPlaying`属性,从而确定该动画是否正在播放 [^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值