【问题标题】:Do 250 buttons slow the application in WP7?250 个按钮会减慢 WP7 中的应用程序吗?
【发布时间】:2012-01-23 01:17:17
【问题描述】:

我正在为 WP7 构建一个包含 250 个单元的棋盘的 BattleShip 游戏。我需要让每个单元格都可以点击,所以我想在每个单元格中放置一个按钮并根据需要处理每次点击。

我的问题是:250 个按钮会使手机变慢吗?如果是,那么有哪些替代方案?

【问题讨论】:

  • 如何在一个 480x800 像素的屏幕上容纳 250 个单元格,而又不会弄乱我粗短的手指?
  • @Emo 我会让你从我的 Nintendo DS 借手写笔
  • @ColinE - :) 谢谢。在 15x15 的网格上,每个按钮有 32 个像素。这是非常小的。
  • @Emo 我也会把我的眼镜借给你:-P

标签: windows-phone-7 windows-phone-7.1


【解决方案1】:

是的。 250 个 UI 控件完全是疯狂的。另一种正确的解决方案是改用 XNA,将您的游戏开发为真正的游戏,而不是一堆 UI 控件。

【讨论】:

  • 我不同意,我不会说 XNA 一定是战舰游戏的正确解决方案。您当然可以使用 Silverlight 以更轻量级的方式创建一个。
  • 我确信它在 XNA 中会比 Silverlight 更轻量级,即使使用最简单的用户控件也是如此。桌面上的 WPF 或 Silverlight 都不能很好地处理大量控件。所以在手机上,情况会更糟。
  • 当然——我的意思是,他不需要控制?他需要点击事件还是鼠标事件?他需要命令绑定吗?视觉状态?模板?如果没有,一个简单的 Rectangle 或 WriteableBitmap 就可以了。
  • 鼠标位置和位图可以解决。但是你实际上是在重新做 XNA 擅长的事情。
【解决方案2】:

是的,250 个按钮会使您的应用程序变得非常缓慢。 Silverlight 构造一个可视化树来表示您的 UI。每个按钮都包含一个模板,该模板生成各种 broders、矩形等...用于表示视觉状态。

有几个选择:

  1. 使用更轻量级的视觉元素,例如Rectangle。这些没有Click 事件,因此您可以改为处理MouseLeftButtonUp
  2. 可能最轻量级的方法是根本不为每个单元格设置一个元素。只需处理父元素上的鼠标交互,然后从单击位置确定网格单元。 MouseEventArgs 包含一个 e.GetPosition() 方法,可让您确定鼠标单击的位置。

【讨论】:

  • 第二种方法是指使用某种网格图像并通过单击图像计算单元格?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
相关资源
最近更新 更多