程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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語言

以上代碼實現了QXSpirit控件的X,Y依賴屬性。大家不要被看似復雜的代碼所嚇著,其實很簡單的,讓我一一道來。首先將以上代碼分成兩部分:X坐標為第一部分,Y坐標為第二部分。它們的結構是一模一樣的,我們可以忽略Y坐標,只要理解了X依賴屬性的實現,將X換成Y即可。

關於依賴屬性的相關知識,網上不要太多,它不是本教程的重點所以就不多做解釋了。理解它的朋友都明白,上面代碼是它的標准創建形式,public double X是它的屬性訪問器,public static readonly DependencyProperty XProperty 則是定義它。就如上面代碼注釋中寫到的,分別定義它的屬性名、類型、所處類名等等。這樣,一個完整的X依賴屬性就完成了。有的朋友又困惑了,為什麼要那麼麻煩去創建依賴屬性?我直接這樣寫不就得了:

double _X;
public double X {
 get { return _X; }
 set { _X = value; }
}

即傳統又簡單。但是,我想告訴大家的是,在WPF/Silverlight中,只有依賴屬性才能被更好的使用及識別,例如在屬性的綁定,Storyboard目標屬性的設定等等中,都必須使用到依賴屬性來實現,後面的章節中會講到它的必要性。而像如上的屬性訪問器只能用於創建純描述性屬性,例如精靈圖片地址目錄等,就可以使用屬性訪問器:

//精靈圖片源目錄地址
string _ImageAddress;
public string ImageAddress {
 get { return _ImageAddress; }
 set { _ImageAddress = value; }
}

至此,我們完成了一個初具雛形的精靈控件,接下來就是如何將之加入到游戲中了。首先要做的當然是添加精靈控件的引用:

using WPFGameCourse.Controls;

接下來就是創建精靈控件實例並將之添加進窗口的CarrIEr控件中:

QXSpirit Spirit = new QXSpirit();
private void InitSpirit() {
 Spirit.X = 300; //為精靈依賴屬性X賦值
 Spirit.Y = 400; //為精靈依賴屬性Y賦值
 Spirit.Timer.Interval = TimeSpan.FromMilliseconds(150); //精靈圖片切換頻率
 Spirit.ImageAddress = @"..\Player\"; //精靈圖片源地址
 CarrIEr.Children.Add(Spirit);
}

從代碼可以看出,我們已經可以自由的使用Spirit的X,Y屬性了,並且輕松的控制該精靈的圖片切換頻率(為什麼我們需要去控制它的切換頻率呢?因為在游戲中,角色施放魔法有施法速度;物理攻擊時有攻擊速度、甚至可能會被凍結(移動速度減)、麻痺(精靈不動)、加速移動攻擊BUFF等等,這些不光需要更改角色的相關屬性邏輯,更需要在游戲窗口表現時通過調整精靈圖片切換速率來實現之,因此意義是相當相當重大的),是不是有些成就感了?

至於我們在牽引地圖移動的同時,如何實現角色及障礙物的跟隨移動?有了X,Y屬性以後,這再簡單不過了,首先大家來看這張圖:

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