Для свойства KeyTime объекта KeyFrame должно быть установлено неотрицательное значение TimeSpan? - PullRequest
1 голос
/ 23 февраля 2010

All

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

public Storyboard CreateAnimationStoryBoard(DependencyObject dependencyObjectTarget,Image targetImage)
{
        try
        {



            Storyboard sb = new Storyboard();
            Storyboard.SetTarget(sb, dependencyObjectTarget);
            Storyboard.SetTargetName(sb, targetImage.Name);
            Storyboard.SetTargetProperty(sb, new PropertyPath(Image.SourceProperty));

            ObjectAnimationUsingKeyFrames oaukf = new ObjectAnimationUsingKeyFrames();

            oaukf.Duration = TimeSpan.FromSeconds(animationLength);
            oaukf.BeginTime = new TimeSpan(0, 0, 0);

            for (int i = startFrame; i <= endFrame; i++)
            {
                *build an animation string path here (hidden)*

                Uri u;

                Uri.TryCreate(animationString.ToString(), UriKind.RelativeOrAbsolute, out u);
                BitmapImage bi = new BitmapImage(u);

                DiscreteObjectKeyFrame dokf = new DiscreteObjectKeyFrame();

                dokf.KeyTime = KeyTime.Uniform;
                dokf.Value = bi;

                oaukf.KeyFrames.Add(dokf);

            }

            sb.Children.Add(oaukf);
            return sb;

        }

Теперь, в частности, во время выполнения мне сообщается, что «для свойства KeyTime объекта KeyFrame должно быть установлено неотрицательное значение TimeSpan». Если я углублюсь в переменную немного глубже, я больше не получу отладочную информацию. Я проверил, являются ли растровые изображения нулевыми, а они нет. Например, я попытался установить свой собственный временной интервал (до 1 секунды), и я получаю ту же ошибку, что и выше.

Все это происходит от аналогичной функции, которая есть у меня в WPF, которая точно создает раскадровку. Единственное различие между ними заключается в том, что для Keytime установлено значение KeyTime.PACED в wpf. Поскольку Silverlight, по-видимому, не имеет этой опции, я использовал Uniform и столкнулся с этой ошибкой. Может кто-нибудь пролить свет на то, почему это происходит в Silverlight, но работает совершенно нормально в WPF?

1 Ответ

0 голосов
/ 26 февраля 2010

Вы немного используете переменную Keytime:

При настройке ключевого кадра, скажем, в Visibility, используйте это:

        DiscreteObjectKeyFrame kf = new DiscreteObjectKeyFrame();
        kf.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(1000));
        kf.Value = Visibility.Visible;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...