我更喜欢 JS (JSON),因为你有一个原生的 JSON Parser,你可以很容易地测试它。您可以将任何其他格式与 XHR (XMLHttpRequest/Ajax) 一起使用。您还可以在本地文件上使用 XHR ( http://forums.mozillazine.org/viewtopic.php?f=25&p=6033635 )。
这是一个通过 XHR 加载 JSON 的示例类LevelLoader
。
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;
};