這兩個屬性將在游戲中對精靈起到非常關鍵的調控作用。屬性定義完後,我們還得將上一節中制作的角色身體(我制作了兩張分別為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;
}