我在Float32Array
中使用Three.js
作为顶点位置。我想从随机点开始返回一个新的顶点位置数组。
[0...10000].slice( n, n + 100 ) // Works
positions = new Float32Array( amount * 3 )
randPositions = positions.slice( n, n + 100 ) // Doesn't work - undefined is not a function
但是,当我这样做时,它会返回一个错误(positions
已定义且有数据)? Array.prototype
方法是否与Float32Array
兼容?
答案 0 :(得分:1)
许多看似数组的东西 - 具有.length
属性和数字索引属性 - 使用内置的Array方法,但你必须明确地调用它们:
randPositions = [].slice.call(positions, n, n + 100);
该技巧从一个抛弃的Array实例中获取对“slice”方法的引用,并通过.call()
调用它,使你的“position”数组在函数内部为this
。