我正在尝试定位一个循环在另一个循环中创建的每个网格。
我在另一个循环中有一个循环,第一个循环径向创建这些球,在另一个循环中,每当球的圆变大时,通过增加球的数量来重复这些行。 即使循环再次开始,我也尝试将变量增加为具有连续数(1,2,3,4,5…),因为这样做的目的是将php数组的每个声音添加到创建的每个网格中,但是我不知道我是否需要在循环内执行操作,或者如何在循环外执行操作?
var mathpi = Math.PI/180;
var startRadians = startAngle + mathpi;
var arraysamples = <?php echo json_encode($samples);?>;
var rangee = Math.round((Object.keys(arraysamples).length) / 5);
var incrementAngle = 360/totalson;
var incrementRadians = incrementAngle * mathpi;
var totalson = 5;
var yp = 30;
for ( var n = 0; n < rangee; n ++) {
for ( var i = 0; i < totalson; i ++ ) {
var object = new THREE.Mesh( sphere, new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } ) );
var xp = centerX + Math.sin(startRadians) * radius;
var zp = centerZ + Math.cos(startRadians) * radius;
object.position.z = xp;
object.position.x = zp;
object.position.y = yp;
nomsample ++;
scene.add( object );
startRadians += incrementRadians;
}
totalson = totalson + 3;
var nomsample = totalson + 2;
radius = radius + 100;
startAngle = startAngle + 150;
var startRadians = startAngle + mathpi;
var incrementAngle = 360/totalson;
var incrementRadians = incrementAngle * mathpi;
if (yp > 59) {
yp = yp - 30;
} else {
yp = yp + 30;
}
}
的想法是:
for ( var i = 0; i < arraysamples.length ; i ++ ) {
var sound[i] = new THREE.PositionalAudio(listener);
audioLoader.load('sounds/'arraysamples[1]'', function (buffer) {
sound[i].setBuffer(buffer);
sound[i].setRefDistance(20);
sound[i].play();
sound[i].setLoop(true);
sound[i].setVolume(1);
});
object.add(sound[i]);
}
我只希望将数组中分配的每个声音添加到一个网格中,而没有多个网格具有相同的声音。我真的希望我清楚。 感谢您抽出时间阅读我的问题,如果问题看起来很简单,我向您致歉。 祝你有美好的一天!