概述
AnimationAction.getEffectiveTimeScale()
方法返回当前动画的有效时间缩放比率。
语法
AnimationAction.getEffectiveTimeScale()
返回
返回值类型为float
,表示当前动画的有效时间缩放比率。
描述
时间缩放会影响 AnimationMixer 的时间尺度,可以通过 AnimationMixer.setTimeScale()
方法设置。但是,AnimationAction
实例的时间缩放可以被动态调整,使动画更加灵活。例如,在一个走路的动画中,可以将时间缩放加快,以模拟奔跑的效果。
AnimationAction.getEffectiveTimeScale()
返回的值是当前动画的所有时间缩放比率的乘积。这个乘积的值等于 AnimationMixer 的时间尺度与 AnimationAction
的时间缩放值的乘积。
示例
const mixer = new THREE.AnimationMixer( mesh );
const clip = THREE.AnimationClip.CreateFrom... // 创建动画剪辑
const action = mixer.clipAction( clip );
action.play(); // 播放动画
action.setEffectiveTimeScale( 2 ); // 设置时间缩放比率为2
console.log( action.getEffectiveTimeScale() ); // 输出2
console.log( mixer.timeScale ); // 输出1,因为 AnimationMixer 的时间尺度尚未调整
mixer.timeScale = 0.5; // 设置 AnimationMixer 的时间尺度为0.5
console.log( action.getEffectiveTimeScale() ); // 输出1,因为乘积的值为1(2 * 0.5 = 1)
console.log( mixer.timeScale ); // 输出0.5
注意
AnimationAction
的时间缩放和 AnimationMixer 的时间尺度都为1时,getEffectiveTimeScale()
将返回1。AnimationAction
实例的时间缩放,可以尝试使用AnimationMixer.timeScale
动态调整时间尺度。