使用 Win8 及其传感器/XNA/MVVM/Javascript 的乐趣






4.91/5 (4投票s)
本文将使用桌面上的 Win8 传感器,
引言
我一段时间前第一次看到这个比赛,心想,我在这里能做些什么有趣的事情呢?我阅读了我们应该做什么的简要说明,我认为这可能是一个尝试使用一些我关注了一段时间的东西的机会。
所以我的计划是创建一个桌面应用程序,它将利用一些可用于 WinRT 和桌面 API 的传感器,用于在 Windows 8 上运行的应用程序。
例如,我计划使用以下传感器
- 光传感器 (LightSenor) : 它将用于在环境光高于和低于某个阈值时,以可视方式更改应用程序的皮肤
- 陀螺仪 (Gyrometer): 我计划用它来改变托管 Google Earth 的 WebView 的位置
- 加速度计 (Accelerometer) : 我计划用它来旋转托管 Google Earth 的 WebView 的位置,当我看到摇晃事件时
我显然也会使用 MVVM(因为我有一个很好的框架来处理 WPF 和 MVVM),并且我还会使用 System.ComponentModel.Composition 命名空间。
拟议的 UI
这显然只是一个草图模型,但想法是拥有一个非常简洁的 UI,看起来像下面所示的样子。 显然,这个垃圾草图并没有充分展示它的优点,它会比这更精致。
想法是屏幕的左侧将包含一个 Farseer 物理面板,该面板将在 XNA Game 类中包含物理实体。 我将确保此基于 XNA 的代码能够位于常规 WPF 应用程序中。
在网络上的任何地方,都没有过多地讨论将 XNA 托管为本机 WPF 元素,那里有大量的糟糕的 P/Invoke hacks,但我希望尝试找到一种解决方案,允许我将 XNA Game 屏幕视为常规 WPF 控件。 这本身就是一个挑战。 但我也需要实现某种形式的从 XNA Game 屏幕到 WPF 领域的消息传递,以便数据从一个流向另一个,反之亦然。
Farseer 物理面板将包含简单的物理实体,这些实体具有与其关联的一些地理元数据,这样,当单击它们时,托管 Google Earth 的 WebView(这是使用 Javascript 完成的,我可能会补充说)将被动画到单击的位置。 为了好玩,物理实体显然必须相互碰撞,并被墙壁包围以限制它们的运动。
这将涉及使用 WinRT 中提供的 ScriptNotify
互操作方法与 JavaScript 进行通信,而 JavaScript 又将更改 Google Earth 的位置。
我还将允许用户单击一个链接,该链接将使用来自 Farseer 物理面板物理实体的当前选定的元数据执行图像搜索。
我知道这听起来并不疯狂,但我认为真正的乐趣在于当我开始摆弄传感器时,我认为当您摇晃设备时观看地球摇晃,并在环境光线变化时观看视觉效果变化会非常有趣。
我现在没有任何代码,但这是计划,我希望您能看到那里有足够的潜力来获得一些乐趣并创建一个非常有趣的应用程序。 因此,如果我设法通过第一轮,我将尽力做到这一切。