取得方塊 X、Y 位置,與目標 moveTo 比較判斷 +speed 或 -speed。Ctrl+F5 測試,方塊確實動了。
移動抖動、不平滑。因 CompositionTarget 需分別設定 X、Y 速度,範例為簡化將兩者同設為 5,實際不合理。需計算切線值 Tan,依直線速度算出 speed_X、speed_Y:
Canvas.SetLeft(rect, rect_X + (rect_X < moveTo.X ? speed_X : -speed_X));
Canvas.SetTop(rect, rect_Y + (rect_Y < moveTo.Y ? speed_Y : -speed_Y));
如此才能真實模擬移動(具體算法不再贅述)。
CompositionTarget 基於 UI 重繪回調實現幀動畫,下節將介紹第三種動態動畫方法並三者比較。