Я создаю анимацию в C # с помощью API композиции Windows 10. Более конкретно, я собираю вместе анимации, используя метод, показанный здесь , и он выполняет то, что мне нужно.
Мой вопрос заключается в том, что метод предлагает событие End (), которое запускается при завершении пакета. Я использую это, чтобы объединить несколько анимаций в разные элементы интерфейса. Должен ли я также использовать этот метод для очистки предыдущего набора анимаций, поскольку они мне больше не нужны? В любом случае они сделаны с использованием локальных переменных.
Вот мой код, подробно описывающий, что я имею в виду:
private void GreetingTB_Loaded(object sender, RoutedEventArgs e)
{
var _compositor = new Compositor();
_compositor = ElementCompositionPreview.GetElementVisual(GreetingTB).Compositor;
var _visual = ElementCompositionPreview.GetElementVisual(GreetingTB);
var _batch = _compositor.CreateScopedBatch(CompositionBatchTypes.Animation);
var animation = _compositor.CreateScalarKeyFrameAnimation();
animation.Duration = new TimeSpan(0, 0, 0, 2, 0);
animation.InsertKeyFrame(0.0f, 0.0f);
animation.InsertKeyFrame(1.0f, 1.0f);
_batch.Completed += Batch_Completed;
GreetingTB.Text = "Hello!";
_visual.StartAnimation("Opacity", animation);
_batch.End();
}
private void Batch_Completed(object sender, CompositionBatchCompletedEventArgs args)
{
args.Dispose();
// Create new animation here
}
Я вызвал метод args.Dispose (), на всякий случай. Но я хочу знать, есть ли лучший способ. Нужно ли использовать объект «отправитель»?