Как вызвать событие в анимации silverlight по ключевым кадрам? - PullRequest
4 голосов
/ 21 мая 2010

Мне нужно вызвать метод, когда анимация попадает в определенный ключевой кадр. Можно ли вызвать событие, когда анимация попадает в определенный ключевой кадр? Если нет, то есть ли лучший способ вызвать событие в определенное время?

1 Ответ

5 голосов
/ 21 мая 2010

Сроки Silverlight очень ограничены, когда дело доходит до событий. Насколько я могу судить, поддерживается только событие Completed. Однако вы могли бы иметь две временные шкалы внутри одной раскадровки, где вторая временная шкала обновляет привязанное свойство, которое вы можете наблюдать.

Может быть, что-то вроде:

<Storyboard>
    <DoubleAnimationusingKeyFrames ... />
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="TriggerEvent">
        <ObjectKeyFrame KeyTime="00:00:01" Value="True" />
    <ObjectAnimationUsingKeyFrames>
</Storyboard>

Затем в своем коде для элемента управления определите свойство зависимостей с именем TriggerEvent типа Boolean. Когда он изменится на true, вызовите ваш метод.

Другой вариант, однако, , который, вероятно, на самом деле лучше, будет разделять исходную анимацию на две параллельные временные шкалы и подключать обработчик событий Completed к первой временной шкале (которую вы будете использовать для вызова method), затем на второй временной шкале используйте свойство BeginTime, чтобы синхронизировать две анимации так, чтобы вторая игра начала сразу же после завершения первой.

<Storyboard>
    <!-- Timeline 1 -->
    <DoubleAnimationusingKeyFrames Completed="MyCompletedHandler" ... />
    <!-- Timeline 2 -->
    <DoubleAnimationUsingKeyFrames BeginTime="00:00:01" ... />
</Storyboard>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...