0

このような AnimateHorizo​​ntally と AnimateVertically の 2 つのアニメーション メソッドがあるとします。

public void AnimateHorizontally(FrameworkElement element, double XMoveStart, double XMoveEnd, int milli)
        {
            BackEase eEase = new BackEase();
            Storyboard sb = new Storyboard();
            DoubleAnimation daX = new DoubleAnimation(XMoveStart, XMoveEnd, new Duration(new TimeSpan(0, 0, 0, 0, milli)));
            daX.EasingFunction = eEase;
            Storyboard.SetTargetProperty(daX, new PropertyPath("(Canvas.Left)"));
            sb.Children.Add(daX);
            element.BeginStoryboard(sb);
        }

public void AnimateVertically(FrameworkElement element, double YMoveStart, double YMoveEnd, int milli)
        {
            ElasticEase eEase = new ElasticEase();
            Storyboard sb = new Storyboard();
            DoubleAnimation daY = new DoubleAnimation(YMoveStart, YMoveEnd, new Duration(new TimeSpan(0, 0, 0, 0, milli)));
            daY.EasingFunction = eEase;
            Storyboard.SetTargetProperty(daY, new PropertyPath("(Canvas.Top)"));
            sb.Children.Add(daY);
            element.BeginStoryboard(sb);
        }

オブジェクト A に適用すると、XMoveStart と XMoveEnd から水平に移動します。オブジェクト B があり、オブジェクト B に ElasticEase を適用して垂直方向に移動させたい場合。

オブジェクト A と B のアニメーションが同時にスムーズに開始されるはずですが、どうすればよいですか?

電話するだけで

AnimateVertically(A)
AnimateHorizontally(B)

スムーズに動作せず、同時ではないようです。誰でも助けることができますか?ストーリーボードを使用する必要はありません。仕事をする他のアニメーション方法があれば、それらも使用できます。

4

1 に答える 1

0

はいあります。1つのストーリーボードに複数のアニメーションを配置し、アニメーションのTargetName-Propertyを設定するだけです。

ここにサンプルストーリーボードがあります。TargetName-Propertiesに注意してください。

 <Storyboard x:Name="FromMainToBack">
  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleContainerGrid" Storyboard.TargetProperty="ScaleY">
    <LinearDoubleKeyFrame KeyTime="0:0:0.2" Value="0.8"/>
    <LinearDoubleKeyFrame KeyTime="0:0:1.2" Value="0.8"/>
    <LinearDoubleKeyFrame KeyTime="0:0:1.5" Value="1"/>
  </DoubleAnimationUsingKeyFrames>
  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ScaleContainerGrid" Storyboard.TargetProperty="ScaleX">
    <LinearDoubleKeyFrame KeyTime="0:0:0.2" Value="0.8"/>
    <LinearDoubleKeyFrame KeyTime="0:0:1.2" Value="0.8"/>
    <LinearDoubleKeyFrame KeyTime="0:0:1.5" Value="1"/>
  </DoubleAnimationUsingKeyFrames>


  <DoubleAnimation BeginTime="0:0:0.2" Duration="0:0:0.5" From="0" To="90" Storyboard.TargetName="planeProjectionMain" Storyboard.TargetProperty="RotationY">
    <DoubleAnimation.EasingFunction>
      <BackEase EasingMode="EaseIn"/>
    </DoubleAnimation.EasingFunction>
  </DoubleAnimation>
  <DoubleAnimation BeginTime="0:0:0.7" Duration="0:0:0.5" From="270" To="360" Storyboard.TargetName="planeProjectionBack" Storyboard.TargetProperty="RotationY">
    <DoubleAnimation.EasingFunction>
      <BackEase Amplitude="0" EasingMode="EaseOut"/>
    </DoubleAnimation.EasingFunction>
  </DoubleAnimation>
</Storyboard>
于 2012-09-12T07:18:00.513 に答える