다음을 통해 공유


CompositionScopedBatch 클래스

정의

명시적으로 생성된 활성 애니메이션 또는 효과 그룹입니다.

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
상속
Object Platform::Object IInspectable CompositionObject CompositionScopedBatch
특성

예제

범위가 지정된 일괄 처리

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

범위가 지정된 일괄 처리에는 애니메이션 1, 애니메이션 3 및 애니메이션 4가 포함되고 애니메이션 2는 범위가 지정된 일괄 처리에서 제외됩니다.

단일 애니메이션의 완료 이벤트 일괄 처리

단일 애니메이션이 종료되는 시기를 알고 싶다면 대상으로 하는 애니메이션만 포함하는 범위가 지정된 일괄 처리를 만들어야 합니다.

예를 들면 다음과 같습니다.

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

일괄 처리의 완료 이벤트 검색

애니메이션 또는 여러 애니메이션을 일괄 처리할 때 동일한 방식으로 일괄 처리의 완료 이벤트를 검색합니다. 대상 일괄 처리의 Completed 이벤트에 대한 이벤트 처리 메서드를 등록합니다.

myScopedBatch.Completed += OnBatchCompleted;

일괄 처리 상태

기존 일괄 처리의 상태를 확인하는 데 사용할 수 있는 두 가지 속성이 있습니다. IsActiveIsEnded.

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)

메서드

Close()

CompositionObject를 닫고 시스템 리소스를 해제합니다.

(다음에서 상속됨 CompositionObject)
Dispose()

관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다.

(다음에서 상속됨 CompositionObject)
End()

CompositionScopedBatch를 닫습니다. CompositionScopedBatch가 닫힌 후에는 일시 중단하거나 다시 시작할 수 없습니다.

PopulatePropertyInfo(String, AnimationPropertyInfo)

애니메이션 효과를 주는 속성을 정의합니다.

(다음에서 상속됨 CompositionObject)
Resume()

CompositionScopedBatch에서 집계 개체를 다시 시작합니다.

StartAnimation(String, CompositionAnimation, AnimationController)

개체의 지정된 속성에 애니메이션을 연결하고 애니메이션을 시작합니다.

(다음에서 상속됨 CompositionObject)
StartAnimation(String, CompositionAnimation)

개체의 지정된 속성에 애니메이션을 연결하고 애니메이션을 시작합니다.

(다음에서 상속됨 CompositionObject)
StartAnimationGroup(ICompositionAnimationBase)

애니메이션 그룹을 시작합니다.

CompositionObject의 StartAnimationGroup 메서드를 사용하면 CompositionAnimationGroup을 시작할 수 있습니다. 그룹의 모든 애니메이션은 개체에서 동시에 시작됩니다.

(다음에서 상속됨 CompositionObject)
StopAnimation(String)

지정된 속성에서 애니메이션의 연결을 끊고 애니메이션을 중지합니다.

(다음에서 상속됨 CompositionObject)
StopAnimationGroup(ICompositionAnimationBase)

애니메이션 그룹을 중지합니다.

(다음에서 상속됨 CompositionObject)
Suspend()

CompositionScopedBatch에서 집계 개체를 일시 중단합니다.

TryGetAnimationController(String)

지정된 속성에서 실행되는 애니메이션에 대한 AnimationController를 반환합니다.

(다음에서 상속됨 CompositionObject)

이벤트

Completed

CompositionScopedBatch의 모든 애니메이션 및 효과가 완료되면 이벤트가 트리거됩니다.

적용 대상

추가 정보