Freigeben über


CompositionScopedBatch Klasse

Definition

Eine explizit erstellte Gruppe aktiver Animationen oder Effekte.

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
Vererbung
Object Platform::Object IInspectable CompositionObject CompositionScopedBatch
Attribute

Beispiele

Bereichsbezogener Batch

// 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;
}

Hinweise

Stellt eine Gruppe aktiver Animationen oder Effekte dar und löst einen Rückruf aus, wenn alle Mitglieder der Gruppe abgeschlossen sind. Ein CompositionScopedBatch wird explizit erstellt und zum Festlegen bestimmter Objekte verwendet, die in einen einzelnen bereichsbezogenen Batch eingeschlossen werden sollen.

Es können mehrere CompositionScopedBatch-Instanzen erstellt werden, und Objekte können in mehreren Batches gleichzeitig aggregiert werden.

Erstellen

Um eine bestimmte Gruppe von Animationen zu aggregieren oder das Abschlussereignis einer einzelnen Animation als Ziel zu verwenden, erstellen Sie einen bereichsbezogenen Batch. Ein bereichsbezogener Batch wird explizit mit Compositor.CreateScopedBatch erstellt und zum Festlegen bestimmter Objekte verwendet, die in einen einzelnen Batch eingeschlossen werden sollen. Ein bereichsbezogener Batch kann für jeden Thread erstellt werden und ist nicht an den Kompositionsthread gebunden. Bereichsbezogene Batches aggregieren nur Objekte innerhalb des erstellten Threads.

CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);

Anhalten und Fortsetzen

Nach dem Erstellen eines bereichsbezogenen Batches werden alle gestarteten Animationen aggregiert, bis der Batch mithilfe der Funktion Suspend oder End explizit angehalten oder beendet wird.

CompositionScopedBatch kann explizit mit Suspend angehalten werden, um Objekte aus diesem Batch auszuschließen. Wenn ein Batch angehalten wird, kann er durch Aufrufen von Resume erneut geöffnet werden. Durch Aufrufen der Suspend-Funktion wird das Aggregieren von Animationsendzuständen beendet, bis Resume aufgerufen wird. So können Sie Inhalte aus einem bestimmten Stapel explizit ausschließen.

Im folgenden Beispiel wird die Animation, die auf die Offset-Eigenschaft von VisualA abzielt, nicht in den Stapel eingeschlossen:

myScopedBatch.Suspend();
VisualA.StartAnimation("Offset", myAnimation);
myScopeBatch.Resume();

Ende

Ein CompositionScopedBatch muss explizit mit End geschlossen werden. Nach dem Schließen kann es nicht mehr angehalten oder wieder fortgesetzt werden. Zum Beenden des Stapels müssen Sie End() aufrufen. Wenn „End“ nicht aufgerufen wird, bleibt der Stapel geöffnet und erfasst weiterhin Objekte.

Der folgende Codeausschnitt und das Folgende Diagramm zeigen ein Beispiel dafür, wie der Batch Animationen aggregiert, um Endzustände nachzuverfolgen.

Beachten Sie, dass die Animationen 1, 3 und 4 – jedoch nicht 2 – in diesem Beispiel Endzustände aufweisen, die durch diesen Stapel nachverfolgt werden.

myScopedBatch.End();
CompositionScopedBatch myScopedBatch = 	_compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Start Animation1
[…]
myScopedBatch.Suspend();
// Start Animation2 
[…]
myScopedBatch.Resume();
// Start Animation3
[…]
// Start Animation4
[…]
myScopedBatch.End();

Der Bereichsstapel enthält Animation eins, Animation drei und Animation vier, während die Animation zwei aus dem Bereichsstapel ausgeschlossen ist.

Batchverarbeitung des Abschlussereignisses einer einzelnen Animation

Wenn Sie wissen möchten, wann eine einzelne Animation endet, müssen Sie einen bereichsbezogenen Batch erstellen, der nur die Animation enthält, auf die Sie abzielen.

Beispiel:

CompositionScopedBatch myScopedBatch = 	_compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Visual.StartAnimation("Opacity", myAnimation);
myScopedBatch.End();

Abrufen des Abschlussereignisses eines Stapel

Bei der Batchverarbeitung einer oder mehrerer Animationen rufen Sie das Abschlussereignis des Stapels genauso ab. Sie registrieren die Ereignisbehandlungsmethode für das Completed-Ereignis des Zielbatches.

myScopedBatch.Completed += OnBatchCompleted;

Stapelzustände

Es gibt zwei Eigenschaften, die Sie verwenden können, um den Status eines vorhandenen Batches zu bestimmen: IsActive und IsEnded.

Die IsActive-Eigenschaft gibt „true“ zurück, wenn ein Stapel zum Aggregieren von Animationen geöffnet ist. IsActive gibt „false“ zurück, wenn ein Batch angehalten oder beendet wurde.

Die IsEnded-Eigenschaft gibt „true“ zurück, wenn Sie eine Animation diesem spezifischen Stapel nicht hinzufügen können. Ein Batch wird beendet, wenn Sie explizit End für einen bestimmten Batch aufrufen.

Eigenschaften

Comment

Eine Zeichenfolge, die dem CompositionObject zugeordnet werden soll.

(Geerbt von CompositionObject)
Compositor

Der Compositor , der zum Erstellen dieses CompositionObject verwendet wird.

(Geerbt von CompositionObject)
DispatcherQueue

Ruft die DispatcherQueue für das CompositionObject ab.

(Geerbt von CompositionObject)
ImplicitAnimations

Die Auflistung impliziter Animationen, die an dieses Objekt angefügt sind.

(Geerbt von CompositionObject)
IsActive

Gibt an, ob compositionScopedBatch derzeit für zu aggregende Objekte geöffnet ist.

IsEnded

Gibt an , ob compositionScopedBatch geschlossen wurde und keine Änderungen mehr annehmen kann.

Properties

Die Auflistung der Eigenschaften, die dem CompositionObject zugeordnet sind.

(Geerbt von CompositionObject)

Methoden

Close()

Schließt das CompositionObject und gibt Systemressourcen frei.

(Geerbt von CompositionObject)
Dispose()

Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

(Geerbt von CompositionObject)
End()

Schließt compositionScopedBatch. Nachdem compositionScopedBatch geschlossen wurde, kann es nicht mehr angehalten oder fortgesetzt werden.

PopulatePropertyInfo(String, AnimationPropertyInfo)

Definiert eine Eigenschaft, die animiert werden kann.

(Geerbt von CompositionObject)
Resume()

Setzt das Aggregieren von Objekten im CompositionScopedBatch fort.

StartAnimation(String, CompositionAnimation, AnimationController)

Verbindet eine Animation mit der angegebenen Eigenschaft des Objekts und startet die Animation.

(Geerbt von CompositionObject)
StartAnimation(String, CompositionAnimation)

Verbindet eine Animation mit der angegebenen Eigenschaft des Objekts und startet die Animation.

(Geerbt von CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

Startet eine Animationsgruppe.

Mit der StartAnimationGroup-Methode für CompositionObject können Sie CompositionAnimationGroup starten. Alle Animationen in der Gruppe werden gleichzeitig für das Objekt gestartet.

(Geerbt von CompositionObject)
StopAnimation(String)

Trennt eine Animation von der angegebenen Eigenschaft und beendet die Animation.

(Geerbt von CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

Beendet eine Animationsgruppe.

(Geerbt von CompositionObject)
Suspend()

Hält das Aggregieren von Objekten im CompositionScopedBatch an.

TryGetAnimationController(String)

Gibt einen AnimationController für die Animation zurück, die für die angegebene Eigenschaft ausgeführt wird.

(Geerbt von CompositionObject)

Ereignisse

Completed

Das Ereignis wird ausgelöst, sobald alle Animationen und Effekte im CompositionScopedBatch abgeschlossen sind.

Gilt für:

Weitere Informationen