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.setEffectiveTimeScale()

AnimationAction.setEffectiveTimeScale() 是Three.js中一个用于设置动画时间比例的方法。它可以使用一个 timeScale 参数来改变动画的播放速度。

语法

animationAction.setEffectiveTimeScale(timeScale);

参数

  • timeScale:一个数字,表示相对于动画原始速度的播放速度比例。如果 timeScale 为 2,则表示动画将以双倍速度播放;如果为 0.5,则表示动画将以半个原始速度播放。

示例

const mixer = new THREE.AnimationMixer( mesh );
const clip = THREE.AnimationClip.CreateFromMorphTargetSequence( 'morph', geometry.morphAttributes.position, 30 );
const animationAction = mixer.clipAction( clip );

// 播放动画
animationAction.play();

// 将动画速度设置为原来的 2 倍
animationAction.setEffectiveTimeScale( 2 );

在这个示例中,通过 animationAction.play() 方法可以播放动画。然后使用 animationAction.setEffectiveTimeScale() 方法将动画速度设置为原来的 2 倍。

注意事项

  • setEffectiveTimeScale() 方法只能在动画播放之前或者播放过程中设置,在动画停止后设置没有效果。
  • 时间比例可以是小数和负数,负数会导致动画反向播放。
  • 使用 setEffectiveTimeScale() 方法设置了时间比例,还可以使用 AnimationMixer.timeScale 属性来全局控制时间比例。当这两者都设置时,AnimationAction.setEffectiveTimeScale() 的优先级更高,会覆盖 AnimationMixer.timeScale 的值。

参考链接