2008-09-17 46 views
0

我需要在.NET CF中創建一個具有不同/單個窗體的應用程序,每個窗體上都有很多繪圖/動畫。我寧願有一個更新[我自己的狀態管理等]功能,以便我可以管理不同的狀態,這樣我的[J2ME遊戲代碼]就可以在沒有太多變化的情況下工作。我遇到了一些可能的情況。哪一個會是完美的?多個表單和一個更新,它會工作嗎?

  1. 有一個表單,並手動添加/刪除控件,然後使用任何gamelooping技巧。
  2. 使用控件創建不同的窗體並在主線程中調用update和application.doEvents()[while(isAppRunning){UPDATE()Application.DoEvents()}
  3. 創建一個更新 - 根據需要組成。
  4. 任何其他的想法。

請給我建議對此

回答

1

如果一個遊戲的話,我就把你大部分的形式和工作,最基本的要素,如果可能的話工作過的位圖和渲染,通過重寫主窗體的繪畫方法或駐留在其中的控件(可能是面板)。這會給你更好的表現。

主要的問題是,緊湊的框架並不是真的爲很多UI樂趣設計的,你沒有像完全框架那樣免費獲得雙緩衝,適當的透明度對於WinForm控件來說是個婊子,如果你堅持到UI線程太長時間,你會得到嚴重的渲染故障。如果你在後臺線程上做得太多,你甚至可能會得到這些信息! :O

你永遠不會通過明確調用Application.DoEvents獲得最佳性能,我的經驗法則是隻有在故障排除或在UI中寫入少許黑客時纔會使用該規則。

可能值得在後臺線程上粘住遊戲,然後調用。調用控件以重新回到主UI線程以更新顯示,讓用戶有充足的時間響應UI,同時處理用戶輸入。 用戶輸入是我避免正常winform控件的另一個原因,因爲移動設備通常沒有很多按鍵,所以能夠重新映射它們非常有用,所以我通常會避免使用具有預設關鍵事件/響應的TextBoxes。

我也避免使用不同的表單,因爲顯示新表單可以提供微妙的暫停,我一般會將控件換成主表單以避免編寫商業軟件時出現此問題。

在一天結束時,可能值得嘗試各種技術,看看最好的解決方案。另外看看你是否可以從CF開發遊戲的人那裏得到任何提示,因爲我通常只做商業軟件。

HTH!

+0

非常感謝。讓我試着調用控件。 #2後,我已經有渲染故障:O – Azlam 2008-09-18 03:10:08

相關問題