【问题标题】:WP7 : SL/XNA : display XNA data in SilverlightWP7:SL/XNA:在 Silverlight 中显示 XNA 数据
【发布时间】:2012-07-03 12:28:00
【问题描述】:

我正在开发一款 Silverlight/XNA 游戏。有这样的结构:

  • 我的 GamePlay 类继承自 InGamePage
  • InGamePage 继承自 PhoneApplicationPage
  • InGamePage 有一个 OnLayoutUpdated 方法来渲染 SL 控件(使用 UIElementRenderer )。

这是根据 SL/XNA code sample

一切正常,直到我决定在 gamepage.xaml 中创建一个文本块。我希望该 textBlock 显示一些静态游戏变量(例如英雄覆盖的距离)。

现在我应该在哪里写这行:

debugTextBlock.Text = GameData.data.distanceCovered; 

以便文本块显示当前值。 (我试图挂钩一个 LayoutUpdate,但它抛出 Application_UnhandledException 说“检测到布局周期。布局无法完成​​。”)

非常感谢任何提示/链接。

【问题讨论】:

  • 抛出的异常是什么?
  • @Rowland 编辑了问题,但例外是(“检测到布局周期。布局无法完成​​。”)
  • 你看到this earlier question了吗?
  • 这对@Rowland 没有多大帮助,我猜它的 SL+XNA 会阻止两个控件同时渲染。因为如果我尝试在任何事件上更新 debugTextBlock.Text 它工作正常。
  • 如果你解释了你试图从哪里设置文本会有所帮助——如果它来自你覆盖的 OnLayoutUpdated 我可以理解你试图在渲染过程中改变一些东西(这可能会改变一堆其他东西的位置)-您已经发现,如果您更改更新文本的位置,它将起作用,所以这听起来像是您的解决方案。

标签: silverlight windows-phone-7 xna


【解决方案1】:

我认为简单地使用 Dispatcher 可能会起作用:

Dispatcher.BeginInvoke(()=>
{
debugTextBlock.Text = GameData.data.distanceCovered; 
});

【讨论】:

  • 对不起,如果我听起来是新手,但应该在哪里执行此代码。我也检查过这个线程(stackoverflow.com/questions/9320181/…),但都是徒劳的。
  • 由于您提供了 Exception beeeing,我的回答与您的问题完全不符。 debugTextBlock 是固定大小还是根据里面的内容改变大小?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 2012-04-20
相关资源
最近更新 更多