程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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語言

做到這,有朋友忍不住要問了:

對於遍歷子控件,我可拿手了,用Foreach不是更能勝任,為何還要用老土的For呢?

深藍色:這涉及到在Foreach中動態添加和刪除子控件的問題。舉個最簡單的例子,游戲中有一個怪物(monster),你一個如來神掌不小心把它給掛了(monster.Life=0),那麼畫布就需要對其控件進行移除(Carrier.Children.Reomve(monster));好,此時問題來了,CarrIEr.Children這個Collection集合的內容發生了變化(少了一個monster),這將導致系統十分的不高興:*的!誰動了我的怪!(拋出InvalidOperationException異常),這就是臭名昭著的在Foreach遍歷中由於對Collection內容進行更改而引發的血案!如何屏蔽它?用Try{}Catch{}?我非常拒絕在我的代碼中出現這對兄弟,還剩下誰?惟有善良且和諧的For能肩此重任。

又有朋友問了:我們先判斷了子控件是否為QXSpirit類型,恩,這很好很強大;但是後面接著將地圖和遮罩當作Image來判斷是不是有些太牽強?

深藍色:嘿嘿!等你多時了。偉大的地圖控件華麗登場:

有了第十四節關於創建精靈控件的知識,這地圖控件只需要依葫蘆畫瓢,整一個輕松。那麼我們依照第十四節中創建QXSpirit控件的方法,在Controls文件夾上點右鍵添加一個用戶控件,取名叫QXMap

並為其添加如下屬性:

#region (地圖表層/遮罩)屬性

// 地圖關鍵點X定位到左上角0>

public int CenterX { get{…}; set{…}; }

// 地圖關鍵點Y定位到左上角0

public int CenterY { get{…}; set{…}; }

// 地圖X坐標

public double X { get{…}; set{…}; }

// 地圖Y坐標

public double Y { get{…}; set{…}; }

// 地圖寬

public double Width_ { get{…}; set{…}; }

// 地圖高

public double Height_ { get{…}; set{…}; }

// 地圖圖片源

public ImageSource Source { get{…}; set{…}; }

// 地圖透明度

public double Opacity_ { get{…}; set{…}; }

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