2010-02-22 1 views
1

Все,Свойство KeyTime на объекте KeyFrame должно быть установлено на неотрицательное значение TimeSpan?

Может кто-нибудь сказать мне, почему этот 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?

ответ

0

Использование переменной KeyTime откусил:

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

 DiscreteObjectKeyFrame kf = new DiscreteObjectKeyFrame(); 
     kf.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(1000)); 
     kf.Value = Visibility.Visible; 
Смежные вопросы