1

全部,

有人能告诉我为什么这个 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;

        }

现在,具体来说,在运行时,它告诉我“KeyFrame 对象上的 KeyTime 属性必须设置为非负 TimeSpan 值”。如果我更深入地研究变量,我不会得到更多的调试信息。我检查了位图是否为空,但它们不是。例如,我尝试设置自己的时间跨度(设置为 1 秒),但我得到了与上面相同的错误。

这一切都源于我在 WPF 中的一个类似功能,它以这种精确的方式构建故事板。两者的唯一区别是在 wpf 中 Keytime 设置为 KeyTime.PACED。由于 Silverlight 显然没有此选项,因此我使用了 Uniform 并遇到了此错误。有人可以阐明为什么在 Silverlight 中会发生这种情况,但在 WPF 中却完全可以正常工作吗?

4

1 回答 1

0

您对 Keytime 变量的使用有点偏离:

在设置你的关键帧时,比如在可见性上,使用这个:

        DiscreteObjectKeyFrame kf = new DiscreteObjectKeyFrame();
        kf.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(1000));
        kf.Value = Visibility.Visible;
于 2010-02-26T15:16:12.880 回答