CompositionScopedBatch Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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();
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. |