程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(二)讓物體動起來②(2)

C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(二)讓物體動起來②(2)

編輯:關於C語言

首先獲取方塊的X,Y位置,接下讓方塊的X,Y與moveTo的X,Y進行比較而判斷是+speed還是-speed,這裡的邏輯需要朋友們自行領會了。

好了Ctrl+F5測試一下,呵呵,是不是同樣也動起來了呢?

可是大家會發現一個很大的問題:這方塊移動得也太勉強了吧,抖來抖去的而且移動得也不平滑,是不是CompositionTarget有問題?其實不然,因為之前的Storyboard動畫它不存在X,Y軸的速度,只需要設定起點和終點以及過程經歷的時間就可以平滑的移動了,而CompositionTarget需要分別設定X,Y軸的速度,而我們這為了簡單演示,X,Y軸的速度speed均設置成了5,這在現實使用中是絕對不合理的。因此,如果要模擬實際效果,必須計算終點和起點的正切值Tan,然後再根據直線速度speed通過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主界面刷新線程實現基於幀的動畫,下一節我將講解第三種動態創建動畫的方法,並會對這三種方法進行一個歸納比較。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved