使用故事板为3D对象制作动画
本文关键字:对象 动画 3D 故事 | 更新日期: 2023-09-27 18:04:41
我在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.
当你说无济于事时,你现在处于什么情况?如果您目前在程序开始时遇到异常,我的猜测是尝试在xaml中定义您的Storyboard
,或者反过来在c#中定义您的cube,并调用FrameworkElement
的RegisterName
方法。如果没有,请详细说明
我倾向于在XAML中声明StoryBoard(因为你可以很容易地在Blend中创建你想要的,或者在XAML中创建它,然后在c#中调整它,节省了在代码中创建所有它(这是一个噩梦))。
这是一个XAML中的立方体
我在这里做一个旋转的3d立方体:http://www.codeproject.com/Articles/30078/WPF-A-3D-screensaver-written-in-WPF