1

Win8 アプリを作成しようとしていますが、現在直面している問題の 1 つは Margin プロパティのアニメーション化です。

最初はDoubleAnimationMargin.Leftプロパティで を試してみましたが、いくつかの例外をねじ込み、少しグーグルで調べたところ、「非 DependencyProperty」をアニメーション化できないことがわかりました。(これは実際に理にかなっています)

したがって、余白プロパティを実際にアニメーション化できる唯一の方法はオブジェクトを使用することであることがわかりましたがObjectAnimationUsingKeyFrames、これはオブジェクトのフレームごとの状態にすぎません。アニメーションは作成されず、キャンバス上で楕円を再配置するだけです。

私の質問です。DiscreteObjectKeyFrameさまざまな値を持つオブジェクトの束を追加せずに、どうにかして Margin プロパティで素敵できれいなアニメーションを作成しますか?

4

2 に答える 2

1

Nigel が述べたように、これは通常、次のように CompsiteTransform または TranslateTransform の TranslateX または TranslateY プロパティをアニメーション化することによって最もよく実現されます。

<Storyboard x:Name="ShowThatFunkyEllipse">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="MyMovingElement">
        <EasingDoubleKeyFrame KeyTime="0" Value="-350"/>
        <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0" />
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

... snip ...

<Ellipse x:Name="MyMovingElement">
    <Ellipse.RenderTransform>
        <CompositeTransform TranslateX="-350" />
    </Ellipse.RenderTransform>
</Ellipse>

この例では DoubleAnimationUsingKeyframes を使用したことに注意してください。アニメーションが非線形の場合はより柔軟になりますが、必要に応じて単純な DoubleAnimation を使用することもできます。また、必要に応じて CompositeTransform を TranslateTransform に切り替えることもできます。CompositeTransform を使用して、要素 (回転など) でさらに多くのことが起こるようにする傾向があります。

于 2013-10-03T10:27:11.190 に答える