2

我是一个相当精通的程序员,所以学习新技术应该不是什么大问题。话虽如此,我目前正在尝试使用 canvas/javascript 等在 HTML5 中制作纸牌游戏。

我目前的问题是用什么来存储卡片的实例。我正在考虑使用 XML 来存储卡片数据,但我想限制浏览器必须做的工作量,以便游戏运行更流畅,我听说 JSON 是一个不错的选择,但我只是寻找建议。谢谢!

4

4 回答 4

1

我认为 JSON 更好。
您可以在服务器端将对象序列化为 JSON 并将 JSON 字符串发送到客户端(浏览器),然后您的客户端将能够使用JSON.parse. 通过这种方式,您无需遍历 XML 来查找特定节点,而只需使用原生 JavaScript 对象/数组以更方便的方式处理数据。同样在大多数情况下,JSON 将比 XML 更紧凑,因此可以节省带宽并加快数据加载。
此外,数据类型在这里可能很重要——JSON 正确地表示数据类型(整数、布尔值、浮点数、字符串),而 XML 将它们存储为字符串,因此您需要一些额外的属性来在序列化期间设置数据类型并在反序列化期间确定它。

于 2012-09-26T23:53:45.440 回答
0

我不确定如何在没有框架的情况下做到这一点,但我会使用 Backbone.JS 并创建一个实例外观的模型。例如:{CardNumber:'2', CardColor: 'red', CardClass: 'hearts'}。现在我将创建一个集合来保存所有这些模型,请参阅骨干集合。

所以我会在客户端存储所有这些数据,并可能为用户提供保存游戏的选项,将这些数据保存到数据库中。这会将其存储为 JSON,然后当您将其保存到数据库时,您可以对其进行序列化以获取各个组件。

如果您不想保存到数据库并且不想使用框架。尝试在 Javascript 中实现堆栈/队列。请参阅:如何在 JavaScript 中实现堆栈和队列?

我希望这能回答你的问题。

于 2012-09-26T23:55:34.900 回答
0
  • 坚持使用 JSON,因为 JSON 只是普通 JS 对象的字符串表示,浏览器对它非常满意。JS 没有很好的 XML 处理能力,这太昂贵了。

  • 使用 HTML5 localStorage 保存数据,直到您真正需要与服务器同步。频繁的服务器操作会导致您的游戏受到影响。使用批量数据传输而不是许多小型服务器连接(例如在开始和结束时)。

  • 如果画布图形很密集,请考虑使用游戏库。我曾经使用过http://jawsjs.com,但应该有更好的库可用。选择性地仅渲染动态对象,而不是画布上的所有内容。

于 2012-09-27T00:34:54.650 回答
0

JSON 与localStorage结合是一个很好的方法。

有一些库可用于序列化和反序列化 Javascript 对象,并允许您从 localStorage 存储和检索它。简单的 Github 搜索是一个很好的开始方式

于 2012-09-27T22:15:02.573 回答