2010-02-22 32 views
1

全部,KeyFrame对象上的KeyTime属性必须设置为非负的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属性必须被设置为一个非负的时间跨度值”。如果我在变量中进一步深入一点,我就没有进一步的调试信息。我已检查位图是否为空,哪些不是。例如,我尝试设置我自己的时间范围(以1秒为单位),并得到与上述相同的错误。

这一切都源于我在WPF中以这种确切方式构建故事板的类似功能。两者的唯一区别在于KeyTime在wpf中设置为KeyTime.PACED。由于Silverlight显然没有这个选项,所以我使用了Uniform并且遇到了这个错误。有人可以解释为什么Silverlight会发生这种情况,但在WPF中工作得很好吗?

回答

0

您使用Keytime变量是有点过:

在设置你的关键帧,说上可见,使用此:

 DiscreteObjectKeyFrame kf = new DiscreteObjectKeyFrame(); 
     kf.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(1000)); 
     kf.Value = Visibility.Visible; 
相关问题