You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

399 lines
15 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body>
<h1>[name]</h1>
<p class="desc">
AnimationActions schedule the performance of the animations which are
stored in [page:AnimationClip AnimationClips].<br /><br />
Note: Most of AnimationAction's methods can be chained.<br /><br />
For an overview of the different elements of the three.js animation system
see the "Animation System" article in the "Next Steps" section of the
manual.
</p>
<h2>Constructor</h2>
<h3>
[name]( [param:AnimationMixer mixer], [param:AnimationClip clip],
[param:Object3D localRoot] )
</h3>
<p>
[page:AnimationMixer mixer] - the `AnimationMixer` that is controlled by
this action.<br />
[page:AnimationClip clip] - the `AnimationClip` that holds the animation
data for this action.<br />
[page:Object3D localRoot] - the root object on which this action is
performed.<br />
[page:Number blendMode] - defines how the animation is blended/combined
when two or more animations are simultaneously played.<br /><br />
Note: Instead of calling this constructor directly you should instantiate
an AnimationAction with [page:AnimationMixer.clipAction] since this method
provides caching for better performance.
</p>
<h2>Properties</h2>
<h3>[property:Number blendMode]</h3>
<p>
Defines how the animation is blended/combined when two or more animations
are simultaneously played. Valid values are *NormalAnimationBlendMode*
(default) and *AdditiveAnimationBlendMode*.
</p>
<h3>[property:Boolean clampWhenFinished]</h3>
<p>
If `clampWhenFinished` is set to true the animation will automatically be
[page:.paused paused] on its last frame.<br /><br />
If `clampWhenFinished` is set to false, [page:.enabled enabled] will
automatically be switched to false when the last loop of the action has
finished, so that this action has no further impact.<br /><br />
Default is `false`.<br /><br />
Note: `clampWhenFinished` has no impact if the action is interrupted (it
has only an effect if its last loop has really finished).
</p>
<h3>[property:Boolean enabled]</h3>
<p>
Setting `enabled` to `false` disables this action, so that it has no
impact. Default is `true`.<br /><br />
When the action is re-enabled, the animation continues from its current
[page:.time time] (setting `enabled` to `false` doesn't reset the
action).<br /><br />
Note: Setting `enabled` to `true` doesnt automatically restart the
animation. Setting `enabled` to `true` will only restart the animation
immediately if the following condition is fulfilled: [page:.paused paused]
is `false`, this action has not been deactivated in the meantime (by
executing a [page:.stop stop] or [page:.reset reset] command), and neither
[page:.weight weight] nor [page:.timeScale timeScale] is `0`.
</p>
<h3>[property:Number loop]</h3>
<p>
The looping mode (can be changed with [page:.setLoop setLoop]). Default is
[page:Animation THREE.LoopRepeat] (with an infinite number of
[page:.repetitions repetitions])<br /><br />
Must be one of these constants:<br /><br />
[page:Animation THREE.LoopOnce] - playing the clip once,<br />
[page:Animation THREE.LoopRepeat] - playing the clip with the chosen
number of `repetitions`, each time jumping from the end of the clip
directly to its beginning,<br />
[page:Animation THREE.LoopPingPong] - playing the clip with the chosen
number of `repetitions`, alternately playing forward and backward.
</p>
<h3>[property:Boolean paused]</h3>
<p>
Setting `paused` to `true` pauses the execution of the action by setting
the effective time scale to `0`. Default is `false`.<br /><br />
</p>
<h3>[property:Number repetitions]</h3>
<p>
The number of repetitions of the performed [page:AnimationClip] over the
course of this action. Can be set via [page:.setLoop setLoop]. Default is
`Infinity`.<br /><br />
Setting this number has no effect, if the [page:.loop loop mode] is set to
[page:Animation THREE.LoopOnce].
</p>
<h3>[property:Number time]</h3>
<p>
The local time of this action (in seconds, starting with `0`).<br /><br />
The value gets clamped or wrapped to `0...clip.duration` (according to the
loop state). It can be scaled relatively to the global mixer time by
changing [page:.timeScale timeScale] (using [page:.setEffectiveTimeScale setEffectiveTimeScale] or [page:.setDuration setDuration]).<br />
</p>
<h3>[property:Number timeScale]</h3>
<p>
Scaling factor for the [page:.time time]. A value of `0` causes the
animation to pause. Negative values cause the animation to play backwards.
Default is `1`.<br /><br />
Properties/methods concerning `timeScale` (respectively `time`) are:
[page:.getEffectiveTimeScale getEffectiveTimeScale],
[page:.halt halt],
[page:.paused paused],
[page:.setDuration setDuration],
[page:.setEffectiveTimeScale setEffectiveTimeScale],
[page:.stopWarping stopWarping],
[page:.syncWith syncWith],
[page:.warp warp].
</p>
<h3>[property:Number weight]</h3>
<p>
The degree of influence of this action (in the interval `[0, 1]`). Values
between `0` (no impact) and `1` (full impact) can be used to blend between
several actions. Default is `1`. <br /><br />
Properties/methods concerning `weight` are:
[page:.crossFadeFrom crossFadeFrom],
[page:.crossFadeTo crossFadeTo],
[page:.enabled enabled],
[page:.fadeIn fadeIn],
[page:.fadeOut fadeOut],
[page:.getEffectiveWeight getEffectiveWeight],
[page:.setEffectiveWeight setEffectiveWeight],
[page:.stopFading stopFading].
</p>
<h3>[property:Boolean zeroSlopeAtEnd]</h3>
<p>
Enables smooth interpolation without separate clips for start, loop and
end. Default is `true`.
</p>
<h3>[property:Boolean zeroSlopeAtStart]</h3>
<p>
Enables smooth interpolation without separate clips for start, loop and
end. Default is `true`.
</p>
<h2>Methods</h2>
<h3>
[method:this crossFadeFrom]( [param:AnimationAction fadeOutAction], [param:Number durationInSeconds], [param:Boolean warpBoolean] )
</h3>
<p>
Causes this action to [page:.fadeIn fade in], fading out another action
simultaneously, within the passed time interval. This method can be
chained.<br /><br />
If warpBoolean is true, additional [page:.warp warping] (gradually changes
of the time scales) will be applied.<br /><br />
Note: Like with `fadeIn`/`fadeOut`, the fading starts/ends with a weight
of `1`.
</p>
<h3>
[method:this crossFadeTo]( [param:AnimationAction fadeInAction], [param:Number durationInSeconds], [param:Boolean warpBoolean] )
</h3>
<p>
Causes this action to [page:.fadeOut fade out], fading in another action
simultaneously, within the passed time interval. This method can be
chained.<br /><br />
If warpBoolean is true, additional [page:.warp warping] (gradually changes
of the time scales) will be applied.<br /><br />
Note: Like with `fadeIn`/`fadeOut`, the fading starts/ends with a weight
of `1`.
</p>
<h3>[method:this fadeIn]( [param:Number durationInSeconds] )</h3>
<p>
Increases the [page:.weight weight] of this action gradually from `0` to
`1`, within the passed time interval. This method can be chained.
</p>
<h3>[method:this fadeOut]( [param:Number durationInSeconds] )</h3>
<p>
Decreases the [page:.weight weight] of this action gradually from `1` to
`0`, within the passed time interval. This method can be chained.
</p>
<h3>[method:Number getEffectiveTimeScale]()</h3>
<p>
Returns the effective time scale (considering the current states of
warping and [page:.paused paused]).
</p>
<h3>[method:Number getEffectiveWeight]()</h3>
<p>
Returns the effective weight (considering the current states of fading and
[page:.enabled enabled]).
</p>
<h3>[method:AnimationClip getClip]()</h3>
<p>Returns the clip which holds the animation data for this action.</p>
<h3>[method:AnimationMixer getMixer]()</h3>
<p>Returns the mixer which is responsible for playing this action.</p>
<h3>[method:Object3D getRoot]()</h3>
<p>Returns the root object on which this action is performed.</p>
<h3>[method:this halt]( [param:Number durationInSeconds] )</h3>
<p>
Decelerates this animation's speed to `0` by decreasing [page:.timeScale timeScale] gradually (starting from its current value), within the passed
time interval. This method can be chained.
</p>
<h3>[method:Boolean isRunning]()</h3>
<p>
Returns true if the actions [page:.time time] is currently running.<br /><br />
In addition to being activated in the mixer (see [page:.isScheduled isScheduled]) the following conditions must be fulfilled: [page:.paused paused] is equal to false, [page:.enabled enabled] is equal to true,
[page:.timeScale timeScale] is different from `0`, and there is no
scheduling for a delayed start ([page:.startAt startAt]).<br /><br />
Note: `isRunning` being true doesnt necessarily mean that the animation
can actually be seen. This is only the case, if [page:.weight weight] is
additionally set to a non-zero value.
</p>
<h3>[method:Boolean isScheduled]()</h3>
<p>
Returns true, if this action is activated in the mixer.<br /><br />
Note: This doesnt necessarily mean that the animation is actually running
(compare the additional conditions for [page:.isRunning isRunning]).
</p>
<h3>[method:this play]()</h3>
<p>
Tells the mixer to activate the action. This method can be chained.<br /><br />
Note: Activating this action doesnt necessarily mean that the animation
starts immediately: If the action had already finished before (by reaching
the end of its last loop), or if a time for a delayed start has been set
(via [page:.startAt startAt]), a [page:.reset reset] must be executed
first. Some other settings ([page:.paused paused]=true, [page:.enabled enabled]=false, [page:.weight weight]=0, [page:.timeScale timeScale]=0)
can prevent the animation from playing, too.
</p>
<h3>[method:this reset]()</h3>
<p>
Resets the action. This method can be chained.<br /><br />
This method sets [page:.paused paused] to false, [page:.enabled enabled]
to true, [page:.time time] to `0`, interrupts any scheduled fading and
warping, and removes the internal loop count and scheduling for delayed
starting.<br /><br />
Note: .`reset` is always called by [page:.stop stop], but .`reset` doesnt
call .`stop` itself. This means: If you want both, resetting and stopping,
dont call .`reset`; call .`stop` instead.
</p>
<h3>[method:this setDuration]( [param:Number durationInSeconds] )</h3>
<p>
Sets the duration for a single loop of this action (by adjusting
[page:.timeScale timeScale] and stopping any scheduled warping). This
method can be chained.
</p>
<h3>[method:this setEffectiveTimeScale]( [param:Number timeScale] )</h3>
<p>
Sets the [page:.timeScale timeScale] and stops any scheduled warping. This
method can be chained.<br /><br />
If [page:.paused paused] is false, the effective time scale (an internal
property) will also be set to this value; otherwise the effective time
scale (directly affecting the animation at this moment) will be set to
`0`.<br /><br />
Note: .`paused` will not be switched to `true` automatically, if
.`timeScale` is set to `0` by this method.
</p>
<h3>[method:this setEffectiveWeight]( [param:Number weight] )</h3>
<p>
Sets the [page:.weight weight] and stops any scheduled fading. This method
can be chained.<br /><br />
If [page:.enabled enabled] is true, the effective weight (an internal
property) will also be set to this value; otherwise the effective weight
(directly affecting the animation at this moment) will be set to `0`.<br /><br />
Note: .`enabled` will not be switched to `false` automatically, if
.`weight` is set to `0` by this method.
</p>
<h3>
[method:this setLoop]( [param:Number loopMode], [param:Number repetitions])
</h3>
<p>
Sets the [page:.loop loop mode] and the number of [page:.repetitions repetitions]. This method can be chained.
</p>
<h3>[method:this startAt]( [param:Number startTimeInSeconds] )</h3>
<p>
Defines the time for a delayed start (usually passed as
[page:AnimationMixer.time] + deltaTimeInSeconds). This method can be
chained.<br /><br />
Note: The animation will only start at the given time, if .`startAt` is
chained with [page:.play play], or if the action has already been
activated in the mixer (by a previous call of .`play`, without stopping or
resetting it in the meantime).
</p>
<h3>[method:this stop]()</h3>
<p>
Tells the mixer to deactivate this action. This method can be chained.<br /><br />
The action will be immediately stopped and completely [page:.reset reset].<br /><br />
Note: You can stop all active actions on the same mixer in one go via
[page:AnimationMixer.stopAllAction mixer.stopAllAction].
</p>
<h3>[method:this stopFading]()</h3>
<p>
Stops any scheduled [page:.fadeIn fading] which is applied to this action.
This method can be chained.
</p>
<h3>[method:this stopWarping]()</h3>
<p>
Stops any scheduled [page:.warp warping] which is applied to this action.
This method can be chained.
</p>
<h3>[method:this syncWith]( [param:AnimationAction otherAction] )</h3>
<p>
Synchronizes this action with the passed other action. This method can be
chained.<br /><br />
Synchronizing is done by setting this actions [page:.time time] and
[page:.timeScale timeScale] values to the corresponding values of the
other action (stopping any scheduled warping).<br /><br />
Note: Future changes of the other action's `time` and `timeScale` will not
be detected.
</p>
<h3>
[method:this warp]( [param:Number startTimeScale], [param:Number endTimeScale], [param:Number durationInSeconds] )
</h3>
<p>
Changes the playback speed, within the passed time interval, by modifying
[page:.timeScale timeScale] gradually from `startTimeScale` to
`endTimeScale`. This method can be chained.
</p>
<h2>Events</h2>
<p class="desc">
There are two events indicating when a single loop of the action
respectively the entire action has finished. You can react to them with:
</p>
<code>
mixer.addEventListener( 'loop', function( e ) { …} ); // properties of e: type, action and loopDelta
mixer.addEventListener( 'finished', function( e ) { …} ); // properties of e: type, action and direction
</code>
<h2>Source</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>