BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

AnimationAction.getEffectiveTimeScale()

概述

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动态调整时间尺度。