1

我正在使用 C# 中的 3D 对象,并且我一直在尝试为立方体设置动画以使其在自己的轴上旋转。此外,我需要能够控制旋转方向并能够暂停动画。

我目前的方法是创建一个故事板并尝试访问在 XAML 上定义的“立方体”对象,但无济于事。谁能指出我做错了什么?

    this.RegisterName("cube", cube);    
    myStoryboard = new Storyboard(); 
    RotateTransform3D myRotateTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0));
    Rotation3DAnimation myRotationAnimation =  new Rotation3DAnimation(Rotation,AnimationSpeed);
    myRotationAnimation.RepeatBehavior = RepeatBehavior.Forever;
    myRotateTransform.Rotation.BeginAnimation(AxisAngleRotation3D.AxisProperty, myVectorAnimation);
    myStoryboard.Children.Add(myRotationAnimation);
    Storyboard.SetTargetName(myRotationAnimation, "cube");
    Storyboard.SetTarget(myRotationAnimation,cube.Transform);
    myStoryboard.Begin();

此代码产生的错误是:

Cannot animate '(0)' on an immutable object instance.
4

2 回答 2

0

当你说无济于事时,你现在处于什么情况?如果您当前在程序开始时遇到异常,我的猜测是尝试Storyboard在 xaml 中定义您的,或者相反地在 c# 中定义您的多维数据集并调用RegisterName您的FrameworkElement. 如果不是,请详细说明。

于 2013-03-20T12:55:25.427 回答
0

我会在 XAML 中声明 StoryBoard(因为您可以在 Blend 中非常轻松地创建您想要的内容,或者在 XAMl 中创建所有内容,然后在 C# 中对其进行调整,无需在代码中创建所有内容(这是一场噩梦) )。

这是 XAML 中的多维数据集

我在这里做了一个旋转的 3d 立方体:http: //www.codeproject.com/Articles/30078/WPF-A-3D-screensaver-written-in-WPF

于 2013-03-20T15:03:49.727 回答