1

イベントで Silverlight の二重アニメーションを反転するにはどうすればよいですか? たとえば、パスとして楕円があり、このパスに沿ってシェイプを無限ループで移動しているとします。ボタンを押すと、スピンの方向を逆にしたい (時計回り <-> 反時計回り)。

具体的には、SL4 で新しく追加された PathListBox オブジェクトを使用しています。パスに沿って指定された場所に最初のアイテムを配置する 0 ~ 100% (double 0 - 1) の start プロパティがあります。このプロパティを 0 から 1 および 1 から 0 にアニメーション化することで、オブジェクトを時計回りおよび反時計回りに回転させることができます。

ボタンがあり、ボタンを押すと、方向を逆にしたいとしましょう。どうすればそれを行うことができますか?アニメーションを一時停止し、アニメーションの To 値と From 値を交換して再開しようとしましたが、これによりアニメーションがジャンプします。したがって、楕円の「3 時」にある場合、「9 時」にジャンプし、そこから後方に移動します。ストーリーボードの CurrentTime プロパティを「Duration - CurrentTime」に設定するなどしてみましたが、そのプロパティは設定できないようです。

結論として、オンデマンドでアニメーションを逆にする方法についてのアイデアはありますか?

PS: PathListBox のスクロール動作を提供する PathListBoxUtils があることは知っていますが、それは私が望むものを完全には実装していません。別の言い方をすれば、PathListBoxUtils を変更して、一度に 1 つの項目をスクロールするのではなく、無限に回転するリバーシブルなカルーセルを作成しようとしています。

4

1 に答える 1

1

アニメーションを一時停止し、To 値と From 値を交換し、Seek メソッドを使用してアニメーションを一定量だけ前方に移動しました。前進するために必要な量は「Duration.TimeSpan() - GetCurrentTime()」ですが、Duration にアクセスすると例外がスローされるようです (オブジェクトの現在の状態に対して操作が無効です)。

今のところ、テストの Duration 値をハードコーディングしただけで、問題なく動作しているようです。実際の実装では、 Duration を何らかの値にバインドでき、計算でもその値を使用できると思います。

于 2010-07-13T07:29:48.860 に答える