我正在创建一个简单的 WebGL 项目,需要一种加载模型的方法。我决定使用 OBJ 格式,所以我需要一种加载它的方法。该文件(将要)存储在服务器上,我的问题是:如何在 JS 中加载文本文件并逐行扫描,一个令牌一个令牌(就像 C++ 中的流一样)?我是 JS 的新手,因此我的问题。方法越简单越好。
更新:我使用了你的解决方案,broofa,但我不确定我是否做对了。我从您编写的 forEach 循环中的文件加载数据,但在它之外(即在您的所有代码之后),我一直在填充数据的对象是“未定义的”。我究竟做错了什么?这是代码:
var materialFilename;
function loadOBJModel(filename)
{
// ...
var req = new XMLHttpRequest();
req.open('GET', filename);
req.responseType = 'text';
req.onreadystatechange = function()
{
if (req.readyState == 4)
{
var lines = req.responseText.split(/\n/g);
lines.forEach(function(line)
{
readLine(line);
});
}
}
req.send();
alert(materialFilename);
// ...
}
function readLine(line)
{
// ...
else if (tokens[0] == "mtllib")
{
materialFilename = tokens[1];
}
// ...
}