WPF HandoffBehavior

Site Index
3年間、保留になっていた動作上の不都合で
アニメーションをボタン等のトリガーで動作させた場合、動作中に再度クリックすると移動終了位置がずれてしまう件。

この例↓だとボタン操作で90度回転するように作成されている。

f:id:TYKYUNC:20150601101947p:plain


ところが同じボタンを二度クリックした場合に問題があって、
例えば一回目のクリックで回転中で35度くらいの位置にある時に
再度クリックした場合、その位置から90度回転しようとするため結果は125度の位置で終了してしまう。

HandoffBehavior.Compose

を指定することにより、90度(終了角度)+ 90度 = 180度できちんと収まるとのこと。
https://msdn.microsoft.com/ja-jp/library/system.windows.media.animation.handoffbehavior%28v=vs.110%29.aspx




AxisAngleRotation3D w_rotateAxis = new AxisAngleRotation3D(w_vector3d, 90);
Rotation3DAnimation w_rotateAnimation = new Rotation3DAnimation();
w_rotateAnimation.By = w_rotateAxis;
w_rotateAnimation.Duration = new TimeSpan(0, 0, z_second);
z_RotateTransform3D[w_targetCube].BeginAnimation(RotateTransform3D.RotationProperty, w_rotateAnimation, HandoffBehavior.Compose);

(参考)
http://tykyunc.hateblo.jp/entry/20111222/1324557589