簡體   English   中英

在winrt中的代碼后面使用情節提要

[英]use storyboard in code Behind in winrt

我需要一些幫助將對象設置為循環路徑的動畫。 為此,我在LoadEvent創建了一些Method ,但是我不知道將Storyboard添加到此代碼中。 Storyboard應在循環路徑中更改我的Object的位置。 AngelToPointMethod計算的圓形路徑。 如果我將SetTargetPropertyTranslateXTranslateY控件將移至“直接路徑”,但我需要逐個天使移動。

這是我的代碼

 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:如何處理propertyChangedAngle屬性?

我執行的實現對嗎?

我需要運行UpdatePosition正當的變化值Angle並不是所有的屬性。

2:如何將SetTargetPropertyAngle屬性?

假設您有一個KeyFrame定義為:

<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="PaneGrid">
                                <EasingDoubleKeyFrame x:Name="Frame1" KeyTime="0:0:0.1" Value="1"/>
                                <EasingDoubleKeyFrame x:Name="Frame2" KeyTime="0:0:0.4" Value="1"/>
                            </DoubleAnimationUsingKeyFrames>

您可以使用x:Name屬性讓您在cs中找到Frame。 您可以通過x:Name找到情節提要的參考:

var stoaryboard = RootGrid.Resources["MyStoryboard"] as Stoaryboard;
stoaryboard.Begin();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM