我在製作Silverlight中的時鐘。我試圖以編程方式設置動畫代碼,因爲我想爲3個時鐘中的每一個重複使用相同的代碼(並且我不認爲我可以用xaml中的單個故事板完成此操作)。以C編程方式創建Silverlight動畫#
public void Rotate(double toAngle, RotateTransform rotate)
{
Storyboard sb = new Storyboard();
DoubleAnimationUsingKeyFrames keyframes = new DoubleAnimationUsingKeyFrames();
EasingDoubleKeyFrame easingStart = new EasingDoubleKeyFrame();
easingStart.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0));
easingStart.Value = rotate.Angle;
EasingDoubleKeyFrame easingEnd = new EasingDoubleKeyFrame();
easingEnd.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.5));
easingEnd.Value = toAngle;
var ease = new ElasticEase();
ease.EasingMode = EasingMode.EaseIn;
easingEnd.EasingFunction = ease;
keyframes.KeyFrames.Add(easingStart);
keyframes.KeyFrames.Add(easingEnd);
Storyboard.SetTarget(keyframes, rotate);
Storyboard.SetTargetProperty(keyframes, new PropertyPath("(RotateTransform.Angle)"));
sb.Children.Add(keyframes);
sb.Begin();
}
我通過我希望當前手旋轉的角度和該手的旋轉變換。從這個旋轉變換我得到了起始角度。
當我運行時鐘時,時鐘指針移動(秒針每秒移動到正確的位置等),但動畫看起來並不真正生成動畫。他們只是馬上從頭到尾。
爲什麼動畫不能正常發生?
所以問題是,你想要一個勞力士還是一個關閉?有時候一個淘汰賽太難創造了。 :) – Marc 2011-03-29 05:27:02