所以,我正在使用Javascript构建一个基于浏览器的RPG.最初,我的关卡有一层,是从一个javascript 2d地图数组加载的.但是,我正在更改我的代码以允许支持从文件加载的多个图层.
我可以在没有太多问题的情况下检索文件数据,但是,我不知道如何将信息解析为可用的数组.
LAYER
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
LAYER
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
我的Ajax和PHP用于检索级别;
// JAVASCRIPT
$.ajax({
type: 'POST',
url: 'lib/ajax.PHP',
data: {method: 'getLevel'},
success: function(data){
},
error: function(x, h, r){
console.log(x, h, r);
}
})
// PHP FILE 2
public function getLevel(){
$file = file_get_contents('../levels/level1.txt');
echo $file;
}
有一个中间文件处理我的所有ajax请求,并将它们传递给函数类.
我可以将我的关卡数据设置得很好,我只是不知道一旦有了它就该怎么做.
我知道我可以通过在每个组的末尾添加换行符并以这种方式解析它来实现这一点.但是,在将来实施磁贴编辑器时,这将成为一场噩梦.你们有什么建议怎么办吗?你会建议在PHP或javascript级别解析,还是两者兼而有之?
解决方法:
如果您的数据遵循此布局
LAYER
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
LAYER2
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0
你可以这样做
function parseLayer($text){
$layers = array();
$lines = explode("\n", $text);
$lastLayer;
$currArray = array();
foreach($lines as $line){
if(strpos($line, ",") === false){
if(!empty($lastLayer)){
$layers[$lastLayer] = $currArray;
$currArray = array();
}
$lastLayer = trim($line);
}else{
$nodes = explode(",", $line);
$nodeList = array();
foreach($nodes as $node){
$nodeList[] = trim($node);
}
$currArray[] = $nodeList;
}
$layers[$lastLayer] = $currArray;
}
return $layers;
}
然后将其传递给Javascript,您可以使用JSON for PHP json_encode
由于@Mike在他的手机上,这里有代码:
{"LAYER":[
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
],
"LAYER2":[
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。