我需要在 .NET CF 中创建一个具有不同/单个表单的应用程序,每个表单上都有大量绘图/动画。我更喜欢有一个更新[我自己的状态管理等]功能,以便我可以管理不同的状态,以便我的 [J2ME 游戏代码] 无需太多更改即可工作。我遇到了一些可能的情况。哪一个会是完美的?

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

请给我关于此事的建议

有帮助吗?

解决方案

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

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

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

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

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

归根结底,可能值得尝试各种技术,看看哪种技术最有效。另外看看你是否可以从在 CF 上开发游戏的人那里得到一些提示,因为我通常只做商业软件。

哈!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top