Condividi tramite


CompositionScopedBatch Classe

Definizione

Gruppo di animazioni o effetti attivi creato in modo esplicito.

public ref class CompositionScopedBatch sealed : CompositionObject
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.LiftedContract, 65536)]
/// [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.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Foundation.WindowsAppSDKContract, 65536)]
class CompositionScopedBatch final : CompositionObject
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.LiftedContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class CompositionScopedBatch : CompositionObject
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Foundation.WindowsAppSDKContract), 65536)]
public sealed class CompositionScopedBatch : CompositionObject
Public NotInheritable Class CompositionScopedBatch
Inherits CompositionObject
Ereditarietà
Object Platform::Object IInspectable CompositionObject CompositionScopedBatch
Attributi

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();

Il batch con ambito contiene le animazioni 1, 3 e 4, mentre l'animazione 2 ne è esclusa

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)
DispatcherQueue

Ottiene dispatcherQueue per CompositionObject.

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

Connette un'animazione con la proprietà specificata dell'oggetto e avvia l'animazione.

(Ereditato da CompositionObject)
StartAnimation(String, CompositionAnimation, AnimationController)

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 .

Si applica a

Vedi anche