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

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

編輯:關於C語言

這兩個屬性將在游戲中對精靈起到非常關鍵的調控作用。屬性定義完後,我們還得將上一節中制作的角色身體(我制作了兩張分別為Body0.gif和Body1.gif)及武器(同樣也制作了兩把劍:Weapon1.gif和Weapon2.gif)大圖加載進項目中(加載方式請看第五節):

素材准備就緒,接著需要對這些屬性進行設置來初始化主角精靈:

QXSpirit Spirit = new QXSpirit();
private void InitSpirit() {
 Spirit.X = 300;
 Spirit.Y = 400;
 Spirit.Timer.Interval = TimeSpan.FromMilliseconds(150);
 //設置角色身體及裝備
 Spirit.Equipment[0] = 0;
 Spirit.Equipment[1] = 1;
 Spirit.EachActionFrameRange = new int[] { 5, 8, 7, 6, 8 }; //這5個數字在第十七節中講了多次
 Spirit.DirectionFrameNum = 34; //每個方向行上有34列(第十七節中有說明)
 Spirit.TotalWidth = 5100;
 Spirit.TotalHeight = 1200;
 //加載角色圖片源(具體參數意思可以到QXSpirit中了解)
 Spirit.Source = Super.EquipPart(Spirit.Equipment,
Spirit.DirectionNum, Spirit.DirectionFrameNum,
 Spirit.TotalWidth, Spirit.TotalHeight,
Spirit.SingleWidth, Spirit.SingleHeight
);
 CarrIEr.Children.Add(Spirit);
}

該方法很簡單,注釋描述得較清楚了,大家也可以將之與前面章節中的InitSpirit()進行比較來理解。接下來該讓精靈動一下了,我們可以將精靈的生命線程進行如下改進:

//幀推進器
int _FrameCounter = 1;
public int FrameCounter {
 get { return _FrameCounter; }
 set { _FrameCounter = value; }
}
//精靈線程間隔事件
private void Timer_Tick(object sender, EventArgs e) {
 //假如精靈動作發生改變,則調用ChangeAction()方法進行相關參數設置
 if (OldAction != Action) {
  ChangeAction();
 }
 //動態更改精靈圖片源以形成精靈連續動作
 Body.Source = Source[(int)Direction, FrameCounter];
 FrameCounter = FrameCounter == CurrentEndFrame ? CurrentStartFrame : FrameCounter + 1;
}

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