AnimationAction pianifica l'esecuzione delle animazioni archiviate in
[page:AnimationClip AnimationClips].
Nota: La maggior parte dei metodi di AnimationAction può essere concatenata.
Per una paronamica dei diversi elementi del sistema di animazione di three.js consultare
l'articolo "Sistema di animazione" nella sezione "Prossimi Passi" del manuale.
[page:AnimationMixer mixer] - l'`AnimationMixer` controllato da questa azione.
[page:AnimationClip clip] - l'`AnimationClip` che contiene i dati di animazione per questa azione.
[page:Object3D localRoot] - l'oggetto root su cui viene eseguita questa azione.
Nota: Invece di chiamare questo costruttore direttamente, dovresti creare un'istanza AnimationAction con
[page:AnimationMixer.clipAction] poiché questo metodo fornisce la memorizzazione nella cache per migliorare
le prestazioni.
Se `clampWhenFinished` è impostato a true l'animazione verrà automaticamente messa in [page:.paused pausa]
sull'ultimo frame.
Se `clampWhenFinished` è impostato a false, [page:.enabled enabled] verrà automaticamente impostato a false
al termine dell'ultimo ciclo di animazione, in modo che questa azione non abbia più alcun impatto.
Il valore di default è false.
Nota: `clampWhenFinished` non ha impatto se l'azione viene interrotta (ha effetto solo se il suo ultimo ciclo
è effettivamente terminato).
Impostare `enabled` a `false` disabilita questa azione, in modo che non abbia più alcun impatto. Il valore di default è `true`.
Quando l'azione viene riattivata (re-enabled), l'animazione continua dal [page:.time tempo] corrente
(impostare `enabled` a `false` non resetta l'azione).
Nota: Impostare `enabled` a `true` non riavvia automaticamente l'azione. Impostare `enabled` a `true`
farà riavviare l'animazione immediatamente solo se è soddisfatta la seguente condizione:
[page:.paused paused] è `false`, l'azione non è stata disattivata nel frattempo
(eseguendo un comando di [page:.stop stop] o [page:.reset reset]) e né [page:.weight weight] né
[page:.timeScale timeScale] sono pari a `0`.
La modalità di looping può essere modificata con [page:.setLoop setLoop]. L'impostazione predefinita è
[page:Animation THREE.LoopRepeat] (con un numero infinito di [page:.repetitions ripetizioni])
Il valore deve essere una di queste costanti:
[page:Animation THREE.LoopOnce] - riproduce il clip una volta,
[page:Animation THREE.LoopRepeat] - riproduce il clip con il numero di `ripetizioni` prescelto,
ogni volta saltando dalla fine della clip direttamente al suo inizio,
[page:Animation THREE.LoopPingPong] - riproduce il clip con il numero di `ripetizioni` prescelto,
alternativamente in avanti e in indietro.
Impostando `paused` a `true` l'azione verrà sospesa impostando il time scale effettivo a `0`. Il valore di default è `false`.
Il numero di ripetizioni dell'[page:AnimationClip] eseguite nel corso di questa azione.
Può essere settato tramite [page:.setLoop setLoop]. Il valore di default è `Infinity`.
Se la modalità di [page:loop looping] è impostata a [page:Animation THREE.LoopOnce], impostare questo valore non ha effetti.
L'ora locale di questa azione (in secondi, partendo da `0`).
Il valore viene bloccato a `0...clip.duration` (in base allo stato del ciclo). Può essere scalato
rispetto al tempo globale del mixer modificando [page:.timeScale timeScale] (utilizzando
[page:.setEffectiveTimeScale setEffectiveTimeScale] o [page:.setDuration setDuration]).
Fattore di scala per il [page:.time tempo]. Un valore uguale a `0` mette in pausa l'azione. Valori
negativi fanno sì che l'animazione venga riprodotta all'indietro. Il valore di default è `1`.
Le proprietà/metodi relativi a `timeScale` (rispettivamente `time`) sono:
[page:.getEffectiveTimeScale getEffectiveTimeScale],
[page:.halt halt],
[page:.paused paused],
[page:.setDuration setDuration],
[page:.setEffectiveTimeScale setEffectiveTimeScale],
[page:.stopWarping stopWarping],
[page:.syncWith syncWith],
[page:.warp warp].
Il grado di influenza di questa azione (nell'intervallo `[0, 1]`). I valori tra `0` (nessun impatto)
e 1 (impatto totale) possono essere usati per combinare più azioni. Il valore di default è `1`.
Le proprietà/metodi relativi a `weight` sono:
[page:.crossFadeFrom crossFadeFrom],
[page:.crossFadeTo crossFadeTo],
[page:.enabled enabled],
[page:.fadeIn fadeIn],
[page:.fadeOut fadeOut],
[page:.getEffectiveWeight getEffectiveWeight],
[page:.setEffectiveWeight setEffectiveWeight],
[page:.stopFading stopFading].
Abilita l'interpolazione uniforme senza clip separati per inizio, loop e fine. Il valore di default è `true`.
Abilita l'interpolazione uniforme senza clip separati per inizio, loop e fine. Il valore di default è `true`.
Provoca il [page:.fadeIn fade in] (la dissolvenza in entrata) di questa azione, e la dissolvenza in uscita di un'altra azione
simultaneamente, entro l'intervallo passato. Questo metodo può essere concatenato.
Se warpBoolean è true, verranno applicati ulteriori [page:.warp warping] (modifiche graduali delle scale temporali).
Nota: Come con `fadeIn`/`fadeOut`, la dissolvenza inizia/termina con un weight di 1.
Provoca il [page:.fadeOut fade out] (la dissolvenza in uscita) di questa azione, e la dissolvenza in entrata di un'altra azione
simultaneamente, entro l'intervallo passato. Questo metodo può essere concatenato.
Se warpBoolean è true, verranno applicati ulteriori [page:.warp warping] (modifiche graduali delle scale temporali).
Nota: Come con `fadeIn`/`fadeOut`, la dissolvenza inizia/termina con un weight di 1.
Aumenta il [page:.weight weight] di questa azione gradualmente da `0` a `1`, entro l'intervallo passato. Questo metodo può essere concatenato.
Diminuisce il [page:.weight weight] di questa azione gradualmente da `1` a `0`, entro l'intervallo passato. Questo metodo può essere concatenato.
Restituisce l'effettivo time scale (considerando lo stato attuale di [page:.warp warping] e di [page:.paused paused]).
Restituisce l'effettivo weight (considerando lo stato attuale di fading e di [page:.enabled enabled]).
Restituisce la clip che contiene i dati di animazione di questa azione.
Restituisce il mixer responsabile dell'esecuzione di questa azione.
Restituisce l'oggetto root sul quale questa animazione è eseguita.
Decelera la velocità di questa animazione a `0` diminuendo gradualmente il [page:.timeScale timeScale] (a partire dal valore corrente), entro l'intervallo passato. Questo metodo può essere concatenato.
Restituisce true se il [page:.time time] dell'azione è attualmente in esecuzione.
Oltre ad essere attivato nel mixer (vedi [page:.isScheduled isScheduled]) le seguenti condizioni devono essere soddisfatte:
[page:.paused paused] deve essere uguale a false, [page:.enabled enabled] deve essere uguale a true,
[page:.timeScale timeScale] deve essere diversa da `0`, e non deve essere prevista nessuna programmazione
per un avvio ritardato ([page:.startAt startAt]).
Nota: il fatto che `isRunning` sia true non significa necessariamente che l'animazione sia effettivamente visibile.
Ciò avviene solo se [page:.weight weight] è impostato su un valore diverso da zero.
Restituisce true se questa azione è attivata nel mixer.
Nota: Questo non significa necessariamente che l'animazione sia effettivamente in esecuzione (confronta
le condizioni aggiuntive per [page:.isRunning isRunning]).
Dice al mixer di attivare l'azione. Questo metodo può essere concatenato.
Nota: Attivare questa azione non significa necessatiamente che l'animazione verrà avviata immediatamente:
Se l'azione era già terminata prima (raggiungendo la fine del suo ultimo loop), o se è stato impostato un tempo
per un inizio ritardato (tramite [page:.startAt startAt]), prima deve essere eseguito un [page:.reset reset].
Anche altre impostazioni, (come [page:.paused paused]=true, [page:.enabled enabled]=false,
[page:.weight weight]=0, [page:.timeScale timeScale]=0) possono impedire la riproduzione dell'animazione.
Reimposta l'azione. Questo metodo può essere concatenato.
Questo metodo imposta [page:.paused paused] a false, [page:.enabled enabled] a true,
[page:.time time] a `0`, interrompe ogni fading e wraping programmati, e rimuove il conteggio del loop
interno per l'avvio ritardato.
Nota: .`reset` è sempre chiamato da [page:.stop stop], ma .`reset` non chiama .`stop`.
Questo significa che se vuoi chiamare entrambi i metodi, non chiamare .`reset`, chiama invece .`stop`.
Imposta la durata per un singolo loop dell'azione (regolando il [page:.timeScale timeScale] e interrompendo qualsiasi warping programmato). Questo metodo può essere concatenato.
Imposta il [page:.timeScale timeScale] e interrompe qualsiasi warping programmato. Questo metodo può essere concatenato.
Se [page:.paused paused] è false, l'effettivo time scale (una proprietà interna) sarà impostato a questo valore,
altrimenti il time scale effettivo (che influenza direttamente l'animazione in questo momento) verrà impostato a `0`.
Nota: Se .`timeScale` è impostato `0` da questo metodo, .`paused` non verrà impostato automaticamente a `true`.
Imposta il [page:.weight weight] e interrompe qualsiasi fading programmato. Questo metodo può essere concatenato.
Se [page:.enabled enabled] è true, l'effettivo weight (una proprietà interna) sarà impostato a questo valore,
altrimenti il weight effettivo (che influenza direttamente l'animazione in questo momento) verrà impostata a `0`.
Nota: Se .`weight` è impostato `0` da questo metodo, .`enabled` non passerà automaticamente a `false`.
Imposta la modalità di [page:.loop looping] e il numero di [page:.repetitions ripetizioni]. Questo metodo può essere concatenato.
Definisce il tempo per un avvio ritardato (solitamente passato come [page:AnimationMixer.time] +
deltaTimeInSeconds). Questo metodo può essere concatenato.
Nota: L'animazione inizierà solo all'ora indicata se .`startAt` è concatenato con
[page:.play play], o se l'azione è già stata attivata nel mixer (da una precedente chiamata di .`play`,
senza che nel frattempo sia stata fermata o resettata).
Dice al mixer di disattivare questa azione. Questo metodo può essere concatenato.
L'azione verrà immediatamente interrotta e completamente [page:.reset resettata].
Nota: puoi interrompere tutte le azioni attive sullo stesso mixer in una volta sola tramite
[page:AnimationMixer.stopAllAction mixer.stopAllAction].
Interrompe qualsiasi [page:.fadeIn fading] programmato applicato a questa azione. Questo metodo può essere concatenato.
Interrompe qualsiasi [page:.warp warping] programmato applicato a questa azione. Questo metodo può essere concatenato.
Sincronizza questa azione con l'altra azione passata. Questo metodo può essere concatenato.
La sincronizzazione viene fatta impostando i valori [page:.time time] e [page:.timeScale timeScale]
di questa azione ai corrispondenti valori dell'altra azione (interrompendo qualsiasi warping programmato).
Nota: Le modifiche future di `time` e `timeScale` dell'altra azione non verranno rilevate.
Modifica la velocità di riproduzione, entro l'intervallo di tempo passato, modificando gradualmente il [page:.timeScale timeScale] da `startTimeScale` a `endTimeScale`. Questo metodo può essere concatenato.
Ci sono due eventi che indicano quando un singolo ciclo dell'azione o l'intera azione è terminata. Si può rispondere ad essi con:
mixer.addEventListener( 'loop', function( e ) { …} ); // properties of e: type, action and loopDelta
mixer.addEventListener( 'finished', function( e ) { …} ); // properties of e: type, action and direction
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]