CompositionScopedBatch Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Gruppo di animazioni o effetti attivi creato in modo esplicito.
public ref class CompositionScopedBatch sealed : CompositionObject
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 131072)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CompositionScopedBatch final : CompositionObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 131072)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionScopedBatch : CompositionObject
Public NotInheritable Class CompositionScopedBatch
Inherits CompositionObject
- Ereditarietà
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10586.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v2.0)
|
Esempio
Batch con ambito
// The Green Square's completion events for the Offset and Opacity animations are aggregated
// The Rotation animation completion event is not aggregated
// When the aggregated events are completed OnBatchCompleted method is executed
public void BatchAnimations()
{
// Create a Scoped batch to capture animation completion events
_batch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Executing the Offset animation and aggregating completion event
ApplyOffsetAnimation(_greenSquare);
// Suspending to exclude the following Rotation animation from the batch
_batch.Suspend();
// Executing the Rotation animation
ApplyRotationAnimation(_greenSquare);
// Resuming the batch to collect additional animations
_batch.Resume();
// Executing the Opacity animation and aggregating completion event
ApplyOpacityAnimation(_greenSquare);
// Batch is ended and no objects can be added
_batch.End();
// Method triggered when batch completion event fires
_batch.Completed += OnBatchCompleted;
}
Commenti
Rappresenta un gruppo di animazioni o effetti attivi e attiva un callback quando tutti i membri del gruppo sono stati completati. Un oggetto CompositionScopedBatch viene creato in modo esplicito e viene usato per designare oggetti specifici da includere in un singolo batch con ambito.
È possibile creare più istanze di CompositionScopedBatch e aggregare oggetti in più batch contemporaneamente.
Crea
Per aggregare un gruppo specifico di animazioni o impostare come destinazione un singolo evento di completamento dell'animazione, si crea un batch con ambito. Un batch con ambito viene creato in modo esplicito usando Compositor.CreateScopedBatch e viene usato per designare oggetti specifici da includere in un singolo batch. Un batch con ambito può essere creato in qualsiasi thread e non è associato al thread di composizione. I batch con ambito aggregano solo gli oggetti all'interno del thread che viene creato.
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Sospendere e riprendere
Dopo aver creato un batch con ambito, tutte le animazioni avviate vengono aggregate fino a quando il batch non viene sospeso o terminato in modo esplicito usando la funzione Suspend o End.
CompositionScopedBatch può essere sospeso in modo esplicito con Suspend per escludere gli oggetti da tale batch. Quando un batch viene sospeso, può essere riaperto chiamando Resume. La chiamata alla funzione Suspend interrompe l'aggregazione degli stati di fine dell'animazione fino a quando non viene chiamato Resume. In questo modo puoi escludere esplicitamente il contenuto da un batch specifico.
Nell'esempio seguente l'animazione che specifica come destinazione la proprietà Offset di VisualA non verrà inclusa nel batch:
myScopedBatch.Suspend();
VisualA.StartAnimation("Offset", myAnimation);
myScopeBatch.Resume();
Fine
Un oggetto CompositionScopedBatch deve essere chiuso in modo esplicito usando End. Una volta chiusa, non può essere sospesa o ripresa. Per completare il batch, devi chiamare End(). Se non si esegue una chiamata di fine, il batch continuerà a rimanere aperto e raccogliere oggetti.
Il frammento di codice e il diagramma seguenti illustrano un esempio di come il batch aggrega le animazioni per tenere traccia degli stati finali.
Nota che in questo esempio il batch terrà traccia degli stati finali delle animazioni 1, 3 e 4, ma non dell'animazione 2.
myScopedBatch.End();
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Start Animation1
[…]
myScopedBatch.Suspend();
// Start Animation2
[…]
myScopedBatch.Resume();
// Start Animation3
[…]
// Start Animation4
[…]
myScopedBatch.End();
Invio in batch dell'evento di completamento di una sola animazione
Se vuoi sapere quando termina una singola animazione, devi creare un batch con ambito che includerà solo l'animazione di destinazione.
Ad esempio:
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Visual.StartAnimation("Opacity", myAnimation);
myScopedBatch.End();
Recupero dell'evento di completamento di un batch
Quando invii in batch un'animazione o più animazioni, recupererai l'evento di completamento del batch nello stesso modo. Si registra il metodo di gestione degli eventi per l'evento Completed del batch di destinazione.
myScopedBatch.Completed += OnBatchCompleted;
Stati del batch
Esistono due proprietà che è possibile usare per determinare lo stato di un batch esistente; IsActive e IsEnded.
La proprietà IsActive restituisce true se un batch di destinazione è aperto per l'aggregazione delle animazioni. IsActive restituirà false quando un batch è sospeso o terminato.
La proprietà IsEnded restituisce true quando non puoi aggiungere un'animazione al batch specifico. Un batch verrà terminato quando si chiama in modo esplicito End per un batch specifico.
Proprietà
Comment |
Stringa da associare a CompositionObject. (Ereditato da CompositionObject) |
Compositor |
Compositor utilizzato per creare questo CompositionObject. (Ereditato da CompositionObject) |
Dispatcher |
Dispatcher per CompositionObject. (Ereditato da CompositionObject) |
DispatcherQueue |
Ottiene dispatcherQueue per CompostionObject. (Ereditato da CompositionObject) |
ImplicitAnimations |
Raccolta di animazioni implicite associate a questo oggetto. (Ereditato da CompositionObject) |
IsActive |
Indica se CompositionScopedBatch è attualmente aperto per l'aggregazione degli oggetti. |
IsEnded |
Indica se CompositionScopedBatch è stato chiuso e non può più accettare modifiche. |
Properties |
Raccolta di proprietà associate a CompositionObject. (Ereditato da CompositionObject) |
Metodi
Close() |
Chiude CompositionObject e rilascia le risorse di sistema. (Ereditato da CompositionObject) |
ConnectAnimation(String, CompositionAnimation) |
Connette e animazione. (Ereditato da CompositionObject) |
DisconnectAnimation(String) |
Disconnette un'animazione. (Ereditato da CompositionObject) |
Dispose() |
Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite. (Ereditato da CompositionObject) |
End() |
Chiude CompositionScopedBatch. Una volta chiuso CompositionScopedBatch , non può essere sospeso o ripreso di nuovo. |
PopulatePropertyInfo(String, AnimationPropertyInfo) |
Definisce una proprietà che può essere animata. (Ereditato da CompositionObject) |
Resume() |
Riprende l'aggregazione di oggetti in CompositionScopedBatch. |
StartAnimation(String, CompositionAnimation, AnimationController) |
Connette un'animazione con la proprietà specificata dell'oggetto e avvia l'animazione. (Ereditato da CompositionObject) |
StartAnimation(String, CompositionAnimation) |
Connette un'animazione con la proprietà specificata dell'oggetto e avvia l'animazione. (Ereditato da CompositionObject) |
StartAnimationGroup(ICompositionAnimationBase) |
Avvia un gruppo di animazioni. Il metodo StartAnimationGroup in CompositionObject consente di avviare CompositionAnimationGroup. Tutte le animazioni nel gruppo verranno avviate contemporaneamente sull'oggetto . (Ereditato da CompositionObject) |
StopAnimation(String) |
Disconnette un'animazione dalla proprietà specificata e arresta l'animazione. (Ereditato da CompositionObject) |
StopAnimationGroup(ICompositionAnimationBase) |
Arresta un gruppo di animazioni. (Ereditato da CompositionObject) |
Suspend() |
Sospende l'aggregazione di oggetti in CompositionScopedBatch. |
TryGetAnimationController(String) |
Restituisce un oggetto AnimationController per l'animazione in esecuzione sulla proprietà specificata. (Ereditato da CompositionObject) |
Eventi
Completed |
Evento attivato dopo il completamento di tutte le animazioni e gli effetti in CompositionScopedBatch . |