Laya3D动画倒放后会循环播放的问题,播放完毕回到初始帧问题的解决

找到文件  laya.d3.js 进行修改

路径:bin\libs\laya.d3.js

找到方法 _updatePlayer  进行如下修改

_updatePlayer(animatorState, playState, elapsedTime, islooping) {
			var clipDuration = animatorState._clip._duration * (animatorState.clipEnd - animatorState.clipStart);
			var lastElapsedTime = playState._elapsedTime;
			var elapsedPlaybackTime = lastElapsedTime + elapsedTime;
			playState._lastElapsedTime = lastElapsedTime;
			playState._elapsedTime = elapsedPlaybackTime;
			var normalizedTime = elapsedPlaybackTime / clipDuration;
			playState._normalizedTime = normalizedTime;
			var playTime = normalizedTime % 1.0;
			playState._normalizedPlayTime = playTime < 0 ? playTime + 1.0 : playTime;
			playState._duration = clipDuration;
			var scripts = animatorState._scripts;
			// 修改后代码 
			if (!islooping) {
				console.log(elapsedPlaybackTime, clipDuration);
				if (elapsedPlaybackTime > 0) {
					if (elapsedPlaybackTime >= clipDuration) {
						playState._finish = true;
						playState._elapsedTime = clipDuration;
						playState._normalizedPlayTime = 1.0;
					}
				} else if (elapsedPlaybackTime * -1 >= clipDuration) {
					playState._finish = true;
					playState._elapsedTime = clipDuration;
					playState._normalizedPlayTime = 0;//设置为0,不会返回动画第一帧初始位置
                    //playState._normalizedPlayTime = 1; //设置为1,会返回动画第一帧初始位置
				}
				return;
			}
			//以下是原代码
			// if ((!islooping && elapsedPlaybackTime >= clipDuration)) {
			// 	playState._finish = true;
			// 	playState._elapsedTime = clipDuration;
			// 	playState._normalizedPlayTime = 1.0;
			// 	return;
			// }
			if (scripts) {
				for (var i = 0, n = scripts.length; i < n; i++)
					scripts[i].onStateUpdate();
			}
		}

如果希望动画播放完毕,停留在最后一帧,设置属性为  0

playState._normalizedPlayTime = 0;

如果希望播放完毕回到动画第一帧的位置,设置为1

playState._normalizedPlayTime = 1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值