我正在使用C#中的3D对象,我试图让一个立方体动画化以在其自己的轴上旋转。此外,我需要能够控制旋转的方向并能够暂停动画。
我目前的方法是创建一个Storyboard并尝试访问在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.
答案 0 :(得分:0)
当你说无济于事时,你现在处于哪种情况?
如果您目前在程序开始时遇到异常,我的猜测是尝试在xaml中定义Storyboard
,或者在c#中定义您的多维数据集,并调用{{1}的RegisterName
方法}}。
如果没有,请详细说明。
答案 1 :(得分:0)
我会在XAML中声明StoryBoard(因为你可以在Blend中轻松创建你想要的东西,或者在XAMl中创建它,然后在C#中调整它,节省必须在代码中创建所有它(这是噩梦))。
这是XAML中的一个立方体
我在这里做了一个旋转的三维立方体:http://www.codeproject.com/Articles/30078/WPF-A-3D-screensaver-written-in-WPF