2

私はかなり精通したプログラマーなので、新しいテクノロジーを学ぶことはそれほど大きな問題ではありません。そうは言っても、現在、canvas/javascriptなどを使用してHTML5でカードゲームを作ろうとしています.

現在の質問は、カードのインスタンスを格納するために何を使用するかです。XML を使用してカード データを保存することを考えていましたが、ゲームがよりスムーズに実行されるようにブラウザーが実行する作業の量を制限したいと思います。JSON が良い代替手段だと聞いていますが、私はただ提案を探しています。ありがとう!

4

4 に答える 4

1

私の意見では、JSONの方が優れています。
サーバー側でオブジェクトを JSON にシリアル化し、JSON 文字列をクライアント (ブラウザ) に送信すると、クライアントは JSON 文字列を を使用して通常の JavaScript オブジェクトに解析できますJSON.parse。このように、特定のノードを見つけるために XML をたどる必要はありませんが、ネイティブの JavaScript オブジェクト/配列を使用して、より便利な方法でデータを操作するだけです。また、ほとんどの場合、JSON は XML よりもコンパクトになるため、帯域幅を節約し、データの読み込みを高速化できます。
また、ここではデータ型が重要になる場合があります。JSON はデータ型 (整数、ブール値、浮動小数点数、文字列) を正しく表し、XML はそれらを文字列として格納するため、シリアル化中にデータ型を設定し、逆シリアル化中にデータ型を決定するには、追加の属性が必要になります。

于 2012-09-26T23:53:45.440 に答える
0
  • JSON は単純な JS オブジェクトの単なる文字列表現であり、ブラウザは JSON に非常に慣れているため、JSON に固執します。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 に答える
0

フレームワークなしでこれを行う方法はわかりませんが、Backbone.JS を使用して、インスタンスがどのように見えるかのモデルを作成します。例: {CardNumber:'2', CardColor: 'red', CardClass: 'hearts'}. ここで、これらすべてのモデルを保持するコレクションを作成します。バックボーン コレクションを参照してください。

したがって、このすべてのデータをクライアント側に保存し、場合によってはユーザーにゲームを保存するオプションを提供して、このデータをデータベースに永続化します。これにより、JSON として保存され、データベースに永続化されると、シリアル化して個々のコンポーネントを取得できます。

データベースに保存したくない場合や、フレームワークを使用したくない場合。Javascript でスタック/キューの実装を試してください。参照: JavaScript でスタックとキューをどのように実装しますか?

それがあなたの質問に答えることを願っています。

于 2012-09-26T23:55:34.900 に答える