var vector = function(x, y, z) {
this[0] = x || 0;
this[1] = y || 0;
this[2] = z || 0;
};
vector.prototype = new Float32Array(3);
vector.prototype.getLength = function() {
return Math.sqrt(Math.pow(this[0],2)+Math.pow(this[1],2)+Math.pow(this[2],2));
};
該向量是一個帶有3個元素的float32array。我不知道爲什麼它不起作用。如果我運行此代碼,我得到一個錯誤:'vec3.length' is not a function
如何從Float32Array創建矢量原型?
var vec3 = new vector(3,4,5);
alert(vec3.getLength());
編輯:我換成length
與getLength
。現在它可以在除了Firefox之外的任何地方使用
我用'getLength'替換'length'。現在它可以在除firefox以外的任何地方工作:'(中間值).getLength不是函數' – defunct 2013-03-11 22:08:50
@defunct:Firefox可能會認爲'Float32Array'對象是不可擴展的。如果是這樣,您可能需要添加另一個圖層,以便您可以在中間原型上使用getLength。 (例如,'protovector.prototype = new Float32Array(3); vector.prototype = new protovector();'或者只是將'length'或'getLength'放在實例上,但是由於類型化數組在設計時是固定長度的,我不知道你有多少首先使用'Float32Array'作爲原型 – 2013-03-11 22:10:34
所以沒有辦法在firefox中管理它嗎?我的向量只是一個帶有一些函數的Float32Array – defunct 2013-03-11 22:13:38