我是一位相当精通的程序员,因此学习新技术不应该是一个大问题。话虽这么说我正在尝试使用canvas / javascript等在HTML5中制作纸牌游戏。
我当前的问题是用于存储卡片实例的内容。我正在考虑使用XML来存储卡数据,但我想限制浏览器的工作量,以便游戏运行得更顺畅,我听说JSON是一个不错的选择,但我只是寻找建议。谢谢!
答案 0 :(得分:1)
JSON在我看来更好
您可以在服务器端将对象序列化为JSON并将JSON字符串发送到客户端(浏览器),然后您的客户端将能够使用JSON.parse
将JSON字符串解析为常规JavaScript对象。
通过这种方式,您不需要遍历XML来查找特定节点,而只需使用本机JavaScript对象/数组以更方便的方式处理数据。
此外,在大多数情况下,JSON将比XML更紧凑,因此可以节省带宽并加速数据加载
此外,数据类型的东西在这里可能很重要 - JSON正确表示数据类型(整数,布尔值,浮点数,字符串),XML将它们存储为字符串,因此您需要一些额外的属性来在序列化期间设置数据类型并在反序列化期间确定它。 / p>
答案 1 :(得分:0)
我不确定如何在没有框架的情况下执行此操作,但我要做的是使用Backbone.JS并创建实例的模型。例如:{CardNumber:'2', CardColor: 'red', CardClass: 'hearts'}
。现在我将创建一个集合来保存所有这些模型,请参阅骨干集合。
因此,我将存储所有这些数据客户端,并可能为用户提供保存游戏的选项,以将此数据保存到数据库。这将它存储为JSON,然后当您将其保存到数据库时,您可以将其序列化以获取各个组件。
如果您不想保存到数据库并且不想使用框架。尝试使用Javascript中的堆栈/队列实现。见:How do you implement a Stack and a Queue in JavaScript?
我希望能回答你的问题。
答案 2 :(得分:0)
坚持使用JSON,因为JSON只是普通JS对象的字符串表示,浏览器对此非常熟悉。 JS没有良好的XML处理能力,而且成本太高。
使用HTML5 localStorage保存数据,直到您确实需要与服务器同步。频繁的服务器操作会导致您的游戏受损。使用批量数据传输而不是许多小型服务器连接(例如在开始和结束时)。
如果画布图形很强,请考虑使用游戏库。我曾经使用http://jawsjs.com,但应该有更好的库。有选择地只渲染动态对象,而不是画布上的所有内容。
答案 3 :(得分:0)
JSON与localStorage结合使用是一种很好的方式。
有些库可用于序列化和反序列化Javascript对象,并允许您从localStorage存储和检索它。 Simple Github search是一个很好的开始方式