しばらくの間、配列にデータを追加しようとしましたが、うまくいきません。次のコードがあります。
function OBJMesh(file)
{
this.modelVertex = [];
this.modelColor = [];
var that = this;
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, true);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState == 4)
{
if(rawFile.status === 200 || rawFile.status === 0)
{
var allText = rawFile.responseText;
var lines = allText.split("\n");
for(var i = 0; i < lines.length; i ++)
{
var lineData = lines[i];
var lineString = lineData.split(" ");
if(lineString[0] === "v")
{
var x = parseFloat(lineString[1]);
var y = parseFloat(lineString[2]);
var z = parseFloat(lineString[3]);
/*
this.modelVertex.push(x);
this.modelVertex.push(y);
this.modelVertex.push(z);
this.modelColor.push(0.0);
this.modelColor.push(0.0);
this.modelColor.push(0.0);
this.modelColor.push(1.0);
*/
that.modelVertex.push(10.0);
//document.getElementById("textSection").innerHTML = "testing";
}
}
}
}
}
rawFile.send();
}
OBJMesh.prototype.getModelVertex = function ()
{
return this.modelVertex;
};
OBJMesh.prototype.getModelColor = function ()
{
return this.modelColor;
};
コメントアウトするthis.modelVertex.push(10.0);
と、エラーが渡され、「testing」が出力されます。しかし、コメントを外すと、そこで動かなくなり、何も出力されません。なぜこれを行うのですか?this.modelVertex
実際に指定されたデータを配列にプッシュするようにするにはどうすればよいですか?
どうもありがとう
編集: dystroy が何をすべきかを教えてくれた後、コードを編集しました。OBJMesh コンストラクター (上記) で値を出力しようとすると機能しますが、メイン関数でオブジェクトを作成してこれを実行しようとすると (以下に示します)何も印刷しません。
var cubeModel;
function main()
{
cubeModel = new OBJMesh("file:///Users/Danny/Desktop/3DHTMLGame%202/cube.obj");
document.getElementById("textSection").innerHTML = cubeModel.getModelVertex();
}