Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保持每秒生成一个对象_Javascript_Three.js - Fatal编程技术网

Javascript 保持每秒生成一个对象

Javascript 保持每秒生成一个对象,javascript,three.js,Javascript,Three.js,我有一个功能,可以将随机块对象添加到场景中,并将其在屏幕上向下移动 function enemyPaddleMovement() { scene.add(RandomBlock); RandomBlock.translateX(-8); } 随机块由以下代码生成: var shapes = [LeftBlock, RightBlock, middleRightBlock, middleLeftBlock, middleBlock]; var shape = shapes[Math.floor(

我有一个功能,可以将随机块对象添加到场景中,并将其在屏幕上向下移动

function enemyPaddleMovement()
{
scene.add(RandomBlock);
RandomBlock.translateX(-8);
}
随机块由以下代码生成:

var shapes = [LeftBlock, RightBlock, middleRightBlock, middleLeftBlock, middleBlock];
var shape = shapes[Math.floor(Math.random()*shapes.length)];`

RandomBlock = new THREE.Object3D();
RandomBlock.add(shape);
我想做的是保持每秒生成一个新的RandomBlock对象,并将其在屏幕上向下移动。我尝试过使用setInterval,但它只替换相同的RandomBlock对象,而不是每次都创建一个新对象


有什么帮助吗?

您还需要存储此新对象。我认为您覆盖了旧对象,这就是重新创建的原因。
您可以使用BlockContainer代替RandomBlock,它将是一个列表。

这个问题实际上根本不涉及Three.js;只是你没有创造任何新的对象,而是多次重复使用同一个对象。请尝试以下方法:

// this line stays outside the function
var shapes = [LeftBlock, RightBlock, middleRightBlock, middleLeftBlock, middleBlock];
请注意,在函数之外不再提到
randomBlock
。这是因为它是该函数的一次调用的对象,并且是该函数的唯一对象


我假设你想为每个新对象选择不同的形状。如果没有,则只需将
var shape=…
移回函数外部。

您尝试的代码在哪里?var block=function(){RandomBlock=new THREE.Object3D();RandomBlock.add(shape);}setInterval(block,1000);试试这个
var block=function(){var RandomBlock=new THREE.Object3D();RandomBlock.add(shape);return RandomBlock;}setInterval(block,1000)什么也没发生,谢谢回复:)谢谢回复,我尝试了你的解决方案,但没有成功。这让我想到了我的代码结构,我想问题可能就在那里。
function enemyPaddleMovement()
{
    var shape = shapes[Math.floor(Math.random()*shapes.length)];
    var randomBlock = new THREE.Object3D();
    randomBlock.add(shape);
    scene.add(randomBlock);
    randomBlock.translateX(-8);
}