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

C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(二十五)(1)

編輯:關於C語言
#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(二十五)完美捕捉精靈之神器 -- HitTest

怪物們都出現了,如何選中自己心儀的怪是主角目前首要做的事。

為了進行鼠標狀態區別,我首先對鼠標變化規則進行約束:當鼠標在屏幕上空曠地圖區域移動時,鼠標光標形態表現為默認光標 (0號光標圖片),當鼠標經過精靈(懸停於其上方)時則變成發光光標(1號光標圖片),如果指向的精靈對象為敵對狀態時則鼠標光標變為攻擊光標(2號光標圖片),當使用魔法快捷鍵時,鼠標光標變成凝法狀態(3號光標圖片)。

接下來要做的就是用代碼來實現這些規則。要實現鼠標光標的變換,我們首先得將這4個光標加入到系統中,這裡我新建一個名為Cursors的文件夾用於保存這4個光標,具體添加方法詳見第五節。然後在使用的時候如果該代號光標不存在,則通過數據流將光標添加進系統內存中:

public static Cursor[] GameCursors = new Cursor[4];

/// <summary>

/// 返回指定標號光標

/// </summary>

/// <param name="sign">標號</param>

/// <returns>光標</returns>

public static Cursor getCursor(int sign) {

 if (GameCursors[sign] == null) {

  GameCursors[sign] = new Cursor(new FileStream(string.Format(@"Cursors\{0}.ani", sign), FileMode.Open, FileAccess.Read, FileShare.Read));

 }

 return GameCursors[sign];

}

一切就緒,現在正式開始實現游戲窗體的鼠標移動事件。既然是鼠標在地圖上滑動時產生的效果,因此我們首先添加游戲窗體鼠標移動事件:MouseMove="Window_MouseMove",然後在後台代碼中的Window_MouseMove方法裡寫入相應內容:

private void Window_MouseMove(object sender, MouseEventArgs e) {

 this.Cursor = e.Source is QXSpirit ? Super.getCursor(1) : this.Cursor = Super.getCursor(0);

}

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