【发布时间】:2015-11-17 08:36:10
【问题描述】:
我需要一些帮助来将对象设置为圆形路径。为此,我在LoadEvent 中创建了一些Method 但我不知道将Storyboard 添加到此代码中。
Storyboard 应该在循环路径中更改我的Object 的位置。
循环路径由AngelToPointMethod 计算。
如果我 SetTargetProperty 到 TranslateX 和 TranslateY 我的控制移动到直接路径,但我需要逐个移动天使。
这是我的代码
public class Test : Canvas
{
private int StartAngle = 215;
private Rectangle _myControl = new Rectangle();
private double _angle;
public double Angle
{
get { return _angle;}
set {_angle = value;}
}
public Test()
{
Loaded += OnLoaded;
}
private void OnLoaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
// UpdatePosition(_myControl, StartAngle);
AnimatePositionAtTheFrist(StartOuterAngle);
}
static void OnPropertyChanged(DependencyObject obj,
DependencyPropertyChangedEventArgs args)
{
(obj as CircularSliderControl).OnPropertyChanged(args);
}
void OnPropertyChanged(DependencyPropertyChangedEventArgs args)
{
UpdatePosition(_myControl, StartAngle);
}
private void AnimatePositionAtTheFrist( int startAngle)
{
Duration duration = new Duration(TimeSpan.FromSeconds(1));
Storyboard sb = new Storyboard();
sb.Duration = duration;
//var da = new DoubleAnimationUsingKeyFrames();
var da = new DoubleAnimation();
da.EnableDependentAnimation = true;
da.Duration = duration;
da.From = 0;
da.To = startAngle;
SineEase easingFunction = new SineEase();
easingFunction.EasingMode = EasingMode.EaseOut;
da.EasingFunction = easingFunction;
Storyboard.SetTarget(da, this);
Storyboard.SetTargetProperty(da, "Angle"); // error: Cannot resolve TargetProperty Angle on specified object.
sb.Children.Add(da);
sb.Begin();
}
private void UpdatePosition(Rectangle _myControl, int StartAngle)
{
var startPoint = AngelToPoint(StartAngle);
var tr = new CompositeTransform();
tr.TranslateX = startPoint.X;
tr.TranslateY = startPoint.Y ;
_myControl.RenderTransform = tr;
}
}
更新
我更新了我的代码,但我遇到了两个新问题
1:propertyChanged的Angle属性如何处理?
我所做的实现对吗?
我需要运行UpdatePosition,只是在Angle 的更改值不是所有属性时。
2:如何将SetTargetProperty 转为Angle 属性?
【问题讨论】:
标签: c# animation windows-runtime windows-phone-8.1 storyboard