首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

WPF/Silverlight 遊戲開發教程(十八之三):精靈屬性初始化與生命執行緒改進

     編輯:關於C語言

承接上節,新增兩個關鍵屬性 HoldWidth、HoldHeight 將在遊戲中對精靈起關鍵調控作用。完成屬性定義後,需將角色身體(Body0/1.gif)與武器(Weapon1/2.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 };
    Spirit.DirectionFrameNum = 34;
    Spirit.TotalWidth = 5100;
    Spirit.TotalHeight = 1200;
    Spirit.Source = Super.EquipPart(Spirit.Equipment,
        Spirit.DirectionNum, Spirit.DirectionFrameNum,
        Spirit.TotalWidth, Spirit.TotalHeight,
        Spirit.SingleWidth, Spirit.SingleHeight);
    CarrIEr.Children.Add(Spirit);
}

生命執行緒改進:幀推進器與動態圖片更新

int _FrameCounter = 1;
public int FrameCounter { get { return _FrameCounter; } set { _FrameCounter = value; } }

private void Timer_Tick(object sender, EventArgs e)
{
    if (OldAction != Action) { ChangeAction(); }
    Body.Source = Source[(int)Direction, FrameCounter];
    FrameCounter = FrameCounter == CurrentEndFrame ? CurrentStartFrame : FrameCounter + 1;
}

若動作改變則呼叫 ChangeAction(),接著依朝向與幀推進器動態更新 Body.Source,幀推進器在起始與結束幀之間循環,形成連續動畫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved