0

私はJavascriptゲームを持っています。単純なものです。サーバーにゲームレベルを保存したいのですが、一度にすべてをロードするのではなく、必要なときに非同期でロードします。

私はバックエンドホスト(PHPなどはありません)を持っていませんが、あらゆる種類のファイル(テキスト、画像、jsスクリプトファイル)でレベルを維持できます。

レベルをロードするための良い解決策は何ですか?

4

2 に答える 2

2

ネイティブのJSONパーサーが搭載されていて、簡単にテストできるため、JS(JSON)をお勧めします。XHR(XMLHttpRequest / Ajax)では他の形式を使用できます。ローカルファイルでXHRを使用することもできます(http://forums.mozillazine.org/viewtopic.php?f=25&p=6033635)。

LevelLoaderこれは、 XHRを介してJSONをロードするサンプルクラスです。

if ( typeof gamens== 'undefined') {
    var gamens= {};
}

gamens.LevelLoader = function() {
       this.leveldata = {};
};

gamens.LevelLoader.prototype = {

    fromString : function(data) {
        this.leveldata = JSON.parse(data);
        // this.repaint();
    },

    fromFile : function(name) {
            var xmlhttp = xhr();
            xmlhttp.open("GET", "level/" + name + ".js", true);
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4) {
                    this.fromString(xmlhttp.responseText);
                }
            }
            xmlhttp.send(null);
        }
};


var loader = new gamens.LevelLoader(); 
// load "level/test.js"  
// example: 
// {"tiles":[0,1,1]}
loader.fromFile("test"); 
console.log(loader.leveldata);

XMLHttpRequestオブジェクトを返すxhr関数:

var xhr = function() {
    var _xhr = false;
    if (window.ActiveXObject) {
        try {
            _xhr = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                _xhr = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (ex) {
                _xhr = false;
            }
        }
    }
    if (!_xhr && typeof XMLHttpRequest != 'undefined') {
        try {
            _xhr = new XMLHttpRequest();
        } catch (e) {
            _xhr = false;
        }
    }
    if (!_xhr && window.createRequest) {
        try {
            _xhr = window.createRequest();
        } catch (e) {
            _xhr = false;
        }
    }
    return _xhr;    
};
于 2013-02-21T12:33:59.327 に答える
0

AJAXを見てください。これにより、ページを更新せずにサーバーから追加情報をロードできます。サーバーにどのように保存するかは、ユーザーによって異なります。これらのファイルに何らかのURLでアクセスできるようにする必要があります。サーバーから任意のデータ(JSON / text / HTML / XML)を非同期でダウンロードし、JSコードで使用できるようにするだけです。

私の場合、JSオブジェクトに簡単に変換できるため、サーバーにレベル情報を保存するためにJSON形式を使用するのが最善です。

于 2013-02-21T12:26:19.810 に答える