0

我需要在 .NET CF 中创建一个具有不同/单个表单的应用程序,每个表单上有很多绘图/动画。我希望有一个更新[我自己的状态管理等]功能,以便我可以管理不同的状态,这样我的 [J2ME 游戏代码] 就可以在没有太大变化的情况下工作。我已经遇到了一些可能的情况。哪一个会是完美的?

  1. 拥有一个表单并手动添加/删除控件,然后使用任何游戏循环技巧。
  2. 使用控件创建不同的表单并在主线程中调用 update 和 application.doEvents()。[ while(isAppRunning){ UPDATE() Application.DoEvents() }
  3. 根据需要在每个表单上创建一个更新 - 绘制循环。
  4. 任何其他想法。

请给我关于这个的建议

4

1 回答 1

1

如果它是一个游戏,那么我会放弃大部分表单并使用基本要素,如果可能的话处理位图并通过覆盖主表单的绘制方法或驻留在其中的控件(可能是面板)来呈现它。这会给你更好的表现。

主要问题是紧凑的框架并不是真正为很多 UI 乐趣而设计的,你不会像在完整框架中那样免费获得双缓冲,适当的透明度对于 WinForm 控件来说是个婊子,如果你坚持UI 线程的时间太长,您会遇到严重的渲染故障。如果你在后台线程上做太多事情,你甚至可能会得到这些!:O

您永远不会通过显式调用 Application.DoEvents 获得最佳性能,我的经验法则是仅在故障排除或在 UI 中编写小技巧时使用它。

可能值得将游戏放在后台线程上,然后在控件上调用 .Invoke 以编组回主 UI 线程以更新您的显示,从而在处理用户输入的同时使 UI 有足够的时间进行响应。用户输入是我避免使用普通 winform 控件的另一个原因,因为移动设备通常没有很多键,因此能够重新映射它们非常有用,因此我通常避免使用具有预设键事件/响应的 TextBoxes 之类的东西。

我还避免使用不同的表单,因为显示新表单可能会产生微妙的停顿,我通常将控件换成主表单以避免在编写业务软件时出现此问题。

归根结底,可能值得尝试各种技术,看看哪种方法效果最好。也看看你是否能从在 CF 上开发游戏的人那里得到任何提示,因为我通常只做商业软件。

于 2008-09-17T18:46:27.310 回答