怪物們都出現了,如何選中自己心儀的怪是主角目前首要做的事。
為了進行鼠標狀態區別,我首先對鼠標變化規則進行約束:當鼠標在屏幕上空曠地圖區域移動時,鼠標光標形態表現為默認光標 (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);
}