0

Windows Phone 7 で次のコードを使用してアニメーション化しましたCompositeTransform

        var da = new DoubleAnimationUsingKeyFrames() ;
        _storyboard.Children.Add (da);
        _translateXKeyFrame = new EasingDoubleKeyFrame {...}
        da.KeyFrames.Add (_translateXKeyFrame);
        Storyboard.SetTarget (da, _transform);
        Storyboard.SetTargetProperty(da, "TranslateX");

プロパティをアニメーション化するには、次のコードを使用しました。

        _translateXKeyFrame.Value = value;
        _storyboard.Begin ();

残念ながら、このコードは winrt では機能しません (アニメーションは実行されません)。

winrt には、従属アニメーションと独立アニメーションの概念があります。EnableDependentAnimationフラグを設定すると、アニメーションが実行されているように見えます。問題は、ユーザーがタッチパネルとの対話を終了した後にのみアニメーションが実行されることです。

その理由は、ユーザーが何かをしている間は UI スレッドがブロックされているため、依存するアニメーションが実行されないためだと思います。

EnableDependentAnimationアニメーションが独立したアニメーションとして実行されている場合 (つまり、falseに設定されている場合)、アニメーションが機能しないのはなぜですか?

4

2 に答える 2

1

EnableDependentAnimation プロパティは、変換値をアニメーション化するために設定する必要はありません。WinRT では常に、アニメーションが UI スレッドをブロックしないように、レイアウトに影響を与えずに値をアニメーション化することをお勧めします。Height/Width などのプロパティをアニメーション化するには、EnableDependentAnimation を true に設定する必要があります。

RenderTransform と投影値は、このプロパティを設定しなくてもアニメートできます。

http://www.codeproject.com/Articles/415721/Fast-and-Fluid-Animations-in-your-Windows-UI-App

于 2012-10-01T15:10:25.133 に答える
1

このコードは機能します。

image1.RenderTransform = new TranslateTransform(); 

animateY = new DoubleAnimation();
animateY.from=0;
animateY.To += 200;
animateY.Duration = TimeSpan.FromMilliseconds(400);

Storyboard.SetTarget(animateY, image1.RenderTransform);
Storyboard.SetTargetProperty(animateY, "TranslateTransform.Y");

_story.Children.Add(animateY);
于 2013-02-17T12:04:46.100 に答える