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

C#開發WPF/Silverlight動畫及游戲系列教程(Game Tutorial):(四十三)(3)

編輯:關於C語言

當提示文字發生變化時,它的背景將根據文字的長度與寬度自適應尺寸,且此背景為一個透明度40%的黑色圓角矩形,很漂亮的哦~:

/// <summary>
/// 獲取或設置圖標懸停提示
/// </summary>
public string Tip {
 get { return Details.Text; }
 set {
  Details.Text = value;
  DialogBack.Width = Details.ActualWidth + 10;
  DialogBack.Height = Details.ActualHeight + 10;
 }
}

最終效果如下:

接下來我們還是利用QXIcon來實現鼠標左右鍵快捷技能欄,這裡我定義左鍵只負責主角的跑動、對象選中及主角的物理攻擊,前面章節中已經全部實現了。而右鍵則負責施放魔法,此方案應該算是Silverlight的極限了。需求就是當我們在右鍵快捷按鈕圖標上點擊時,會像《暗黑破壞神》一樣,彈出主角已學會(可用)的所有法術和技能。在Silverlight中,我們可以用微軟開源工具包中WrapPanel輕松將之實現。WrapPanel是一個可以實現內部控件排列超出限定寬度後自動換行的容器,繼承自Panel,和Canvas等容器控件屬同一等級,大家可以到http://www.codeplex.com/Silverlight下載最新的版本。本教程示例游戲中,我直接引用它的dll,除它外,該dll還包含其他的一些控件,一方面由於時間有限,我暫時不去單獨分離了;另一方面,後期制作中很有可能還會用到其中的某些控件,因此先讓它這樣吧~,還挺大的呢(112K)。

如果是網絡游戲,那麼在主角初始化後,我們將從服務器接收到主角的數據,當然包括主角已經掌握的魔法技能,這裡我用一個Magic類來表示:

public class Magic {
 /// <summary>
 /// 代號
 /// </summary>
 public int Code { get; set; }
 /// <summary>
 /// 等級
 /// </summary>
 public int Level { get; set; }
 /// <summary>
 /// 名稱
 /// </summary>
 public string Name { get; set; }
}

暫時先就這幾個參數吧,接下來定義一個主角可用魔法列表List<Magic> availableMagic = new List<Magic>();這裡我假設主角已經掌握了代號為0-5的6種魔法,且每種都到了9級,那麼我將這6種魔法按如下方式加入到availableMagic表中:

//初始化主角可用的所有魔法
availableMagic.Clear();
for (int i = 0; i < 6; i++) {
availableMagic.Add(new Magic() {
Code = i,
Level = 9,
Name = string.Format("名稱:{0}\r\n描述:{1}",
Super.GetXElement(Data.Settings["Arguments"], "Magic",
"Code", i.ToString()).Attribute("Name").Value,
Super.GetXElement(Data.Settings["Arguments"], "Magic", "Code",i.ToString()).Attribute("Description").Value) });
}

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