CompositionScopedBatch 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
명시적으로 생성된 활성 애니메이션 또는 효과 그룹입니다.
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
- 상속
- 특성
예제
범위가 지정된 일괄 처리
// 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;
}
설명
활성 애니메이션 또는 효과 그룹을 나타내고 그룹의 모든 멤버가 완료되면 콜백을 트리거합니다. CompositionScopedBatch는 명시적으로 생성되며 범위가 지정된 단일 일괄 처리에 포함할 특정 개체를 지정하는 데 사용됩니다.
여러 CompositionScopedBatch 인스턴스를 만들 수 있으며 개체를 동시에 여러 일괄 처리로 집계할 수 있습니다.
만들기
특정 애니메이션 그룹을 집계하거나 단일 애니메이션의 완료 이벤트를 대상으로 지정하려면 범위가 지정된 일괄 처리를 만듭니다. 범위가 지정된 일괄 처리는 Compositor.CreateScopedBatch 를 사용하여 명시적으로 만들어지고 단일 일괄 처리에 포함할 특정 개체를 지정하는 데 사용됩니다. 범위가 지정된 일괄 처리는 모든 스레드에서 만들 수 있으며 컴퍼지션 스레드에 연결되지 않습니다. 범위가 지정된 일괄 처리는 생성된 스레드 내에서만 개체를 집계합니다.
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
일시 중단 및 다시 시작
범위가 지정된 일괄 처리를 만든 후 일시 중단 또는 종료 함수를 사용하여 일괄 처리가 명시적으로 일시 중단되거나 종료될 때까지 시작된 모든 애니메이션이 집계됩니다.
CompositionScopedBatch는 해당 일괄 처리에서 개체를 제외하기 위해 Suspend 로 명시적으로 일시 중지될 수 있습니다. 일괄 처리가 일시 중단되면 Resume을 호출하여 다시 열 수 있습니다. Suspend 함수를 호출하면 Resume이 호출될 때까지 애니메이션 종료 상태 집계가 중지됩니다. 이를 통해 제공된 일괄 처리에서 콘텐츠를 명시적으로 제외할 수 있습니다.
아래 예제에서는 VisualA의 Offset 속성을 대상으로 하는 애니메이션이 일괄 처리에 포함되지 않습니다.
myScopedBatch.Suspend();
VisualA.StartAnimation("Offset", myAnimation);
myScopeBatch.Resume();
끝
CompositionScopedBatch는 End를 사용하여 명시적으로 닫아야 합니다. 일단 닫힌 후에는 일시 중단하거나 다시 시작할 수 없습니다. 일괄 처리를 완료하려면 End()를 호출해야 합니다. End 호출이 없으면 일괄 처리는 영원히 수집되는 개체를 열어 둡 수 있습니다.
다음 코드 조각 및 다이어그램은 일괄 처리가 애니메이션을 집계하여 최종 상태를 추적하는 방법의 예를 보여 줍니다.
이 예제에서 애니메이션 1, 3 및 4는 이 Batch에서 추적한 끝 상태를 갖지만 애니메이션 2는 추적하지 않습니다.
myScopedBatch.End();
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
// Start Animation1
[…]
myScopedBatch.Suspend();
// Start Animation2
[…]
myScopedBatch.Resume();
// Start Animation3
[…]
// Start Animation4
[…]
myScopedBatch.End();
단일 애니메이션의 완료 이벤트 일괄 처리
단일 애니메이션이 종료되는 시기를 알고 싶다면 대상으로 하는 애니메이션만 포함하는 범위가 지정된 일괄 처리를 만들어야 합니다.
예를 들면 다음과 같습니다.
CompositionScopedBatch myScopedBatch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
Visual.StartAnimation("Opacity", myAnimation);
myScopedBatch.End();
일괄 처리의 완료 이벤트 검색
애니메이션 또는 여러 애니메이션을 일괄 처리할 때 동일한 방식으로 일괄 처리의 완료 이벤트를 검색합니다. 대상 일괄 처리의 Completed 이벤트에 대한 이벤트 처리 메서드를 등록합니다.
myScopedBatch.Completed += OnBatchCompleted;
일괄 처리 상태
기존 일괄 처리의 상태를 확인하는 데 사용할 수 있는 두 가지 속성이 있습니다. IsActive 및 IsEnded.
IsActive 속성은 대상 일괄 처리가 집계 애니메이션에 열려 있는 경우 true를 반환합니다. 일괄 처리가 일시 중단되거나 종료되면 IsActive는 false를 반환합니다.
IsEnded 속성은 특정 일괄 처리에 애니메이션을 추가할 수 없는 경우 true를 반환합니다. 특정 일괄 처리에 대해 End를 명시적으로 호출하면 일괄 처리가 종료됩니다.
속성
Comment |
CompositionObject와 연결할 문자열입니다. (다음에서 상속됨 CompositionObject) |
Compositor |
이 CompositionObject를 만드는 데 사용되는 Compositor입니다. (다음에서 상속됨 CompositionObject) |
DispatcherQueue |
CompositionObject에 대한 DispatcherQueue를 가져옵니다. (다음에서 상속됨 CompositionObject) |
ImplicitAnimations |
이 개체에 연결된 암시적 애니메이션의 컬렉션입니다. (다음에서 상속됨 CompositionObject) |
IsActive |
집계할 개체에 대해 CompositionScopedBatch 가 현재 열려 있는지 여부를 나타냅니다. |
IsEnded |
CompositionScopedBatch가 닫혔는지 여부를 나타내며 더 이상 변경 내용을 수락할 수 없습니다. |
Properties |
CompositionObject와 연결된 속성의 컬렉션입니다. (다음에서 상속됨 CompositionObject) |
메서드
이벤트
Completed |
CompositionScopedBatch의 모든 애니메이션 및 효과가 완료되면 이벤트가 트리거됩니다. |