Javascript 每秒从数组中随机选择一个新数字 var canvas=document.createElement(“canvas”); b=canvas.getContext(“2d”); canvas.id=“canvas” 画布宽度=900; 帆布高度=600; document.body.appendChild(画布); var-posX=430; posY=300; var myArray=[-3.5,0,3.5]; var dX=myArray[Math.floor(Math.random()*myArray.length)]; var dY=myArray[Math.floor(Math.random()*myArray.length)]; setInterval(函数(){ b、 fillStyle=“钢蓝”; b、 fillRect(0,0,canvas.width,canvas.height); posX+=dX; posY+=dY; 如果(posX>875){ dX=0; posX=875; } if(posX575){ dY=0; posY=575; } if(posY{ dX=myArray[Math.floor(Math.random()*myArray.length)]; dY=myArray[Math.floor(Math.random()*myArray.length)]; }, 1000)

Javascript 每秒从数组中随机选择一个新数字 var canvas=document.createElement(“canvas”); b=canvas.getContext(“2d”); canvas.id=“canvas” 画布宽度=900; 帆布高度=600; document.body.appendChild(画布); var-posX=430; posY=300; var myArray=[-3.5,0,3.5]; var dX=myArray[Math.floor(Math.random()*myArray.length)]; var dY=myArray[Math.floor(Math.random()*myArray.length)]; setInterval(函数(){ b、 fillStyle=“钢蓝”; b、 fillRect(0,0,canvas.width,canvas.height); posX+=dX; posY+=dY; 如果(posX>875){ dX=0; posX=875; } if(posX575){ dY=0; posY=575; } if(posY{ dX=myArray[Math.floor(Math.random()*myArray.length)]; dY=myArray[Math.floor(Math.random()*myArray.length)]; }, 1000),javascript,arrays,random,Javascript,Arrays,Random,这是我所有的代码。我想在背景上随机移动立方体。现在它只向一个随机方向移动。但我希望它每秒钟都改变这个方向。因此,dX和dY必须每秒更改一次。使用setInterval() var myArray=[-3.5,0,3.5]; 变量dX,dY 设置间隔(()=>{ dX=myArray[Math.floor(Math.random()*myArray.length)]; dY=myArray[Math.floor(Math.random()*myArray.length)]; }, 1000) 我个

这是我所有的代码。我想在背景上随机移动立方体。现在它只向一个随机方向移动。但我希望它每秒钟都改变这个方向。因此,dX和dY必须每秒更改一次。

使用
setInterval()

var myArray=[-3.5,0,3.5];
变量dX,dY
设置间隔(()=>{
dX=myArray[Math.floor(Math.random()*myArray.length)];
dY=myArray[Math.floor(Math.random()*myArray.length)];
}, 1000)

我个人会选择使用
Array.prototype
添加一个方法,该方法将获取数组的随机元素,然后使用
setInterval
每秒更新值:

Array.prototype.getRandom=function(){
让index=Math.floor(Math.random()*this.length);
返回此[索引];
}
var myArray=[-3.5,0,3.5];
var-dX,dY;
函数updateDerivations(){
dX=myArray.getRandom(),
dY=myArray.getRandom();
log(“更新值:”,{dX,dY});
}
设置间隔(更新的间隔,1000)
var myArray=[-3.5,0,3.5];
var-dX;
变量dY;

setInterval(()=>{//您也可以使用setInterval(函数(){…},…) dX=myArray[Math.floor(Math.random()*myArray.length)]; dY=myArray[Math.floor(Math.random()*myArray.length)]; },1000)//1000毫秒
这样做: 如果您对代码有任何疑问。请随意写评论

const canvas=document.createElement('canvas')
画布宽度=100
画布高度=100
canvas.style.backgroundColor='steelblue'
document.body.appendChild(画布)
const ctx=canvas.getContext('2d')
常数半径=5
恒速=0.6
let pos=[canvas.width/2,canvas.height/2]
设方向=[0,0]
setInterval(函数(){
位置[0]+=方向[0]*速度
位置[1]+=方向[1]*速度
如果(位置[0]=画布宽度-半径||
位置[1]=画布高度-半径){
pos=[canvas.width/2,canvas.height/2]
}
clearRect(0,0,canvas.width,canvas.height)
ctx.fillStyle=“雪”
ctx.fillRect(位置[0]-半径,位置[1]-半径,2*半径,2*半径)
}, 20)
setInterval(函数(){
const randomAngle=Math.random()*2*Math.PI
方向=[Math.cos(随机角度),Math.sin(随机角度)]

},1000)
使用setInterval欢迎使用堆栈溢出!请访问,看看有什么和。做一些研究,搜索相关话题等;如果你被卡住了,就把你的尝试贴出来,记下输入和预期输出,最好是写在我尝试过的文章里。但现在飞机消失了。但是我没有收到任何错误信息,我也试过了。但是我的飞机消失了,没有给我任何错误信息。哦,你想做一个游戏,这样就可以结束这个问题,打开一个新的干净的问题,描述你想做什么,你的问题是什么。在这种情况下,你需要添加var dX=myArray[Math.floor(Math.random()*myArray.length)];var dY=myArray[Math.floor(Math.random()*myArray.length)];在设定间隔内,你已经有了。一个问题:现在小正方形在接触墙壁时会跳到中心。为什么会这样?所以在if检查
if(pos[0]=canvas.width-RADIUS | | pos[1]=canvas.height-RADIUS)
中,我检查框是否没有反弹。如果是这样的话,用
pos=[canvas.width/2,canvas.height/2]
谢谢。假设我想给这个小广场更多的属性,比如一段时间后消失,一段时间后克隆。我在代码中找不到将平方定义为变量时的确切点。我有没有办法给它一个ID,这样我就可以调用它的函数?(比如克隆和消失对不起,我是一个试图学习编码的完全初学者):/也许我可以使用这样的东西:var ctx_1=ctx.cloneNode(true)?
var canvas = document.createElement("canvas");
        b = canvas.getContext("2d");
        canvas.id = "canvas"
        
        canvas.width = 900;
        canvas.height = 600;
        
        document.body.appendChild(canvas);
        
        
        
        var posX =  430;
        posY = 300;
        
        var myArray = [-3.5,0,3.5];
        
        var dX = myArray[Math.floor(Math.random()*myArray.length)];
        var dY = myArray[Math.floor(Math.random()*myArray.length)];
      
       
        
        setInterval(function (){
                b.fillStyle = "steelblue";
                b.fillRect(0, 0, canvas.width, canvas.height);
                posX += dX;
                posY += dY;
            
                if (posX > 875){
                    dX = 0;
                    posX = 875;
                }
                if (posX < 5){
                    dx = 0;
                    posX = 5;
                }
                if (posY > 575){
                        dY = 0;
                        posY = 575;
                }
                if (posY < 5){
                        dY = 0;
                        posY = 5;
                }
        
        b.fillStyle = "snow";
        b.fillRect(posX, posY, 20, 20);
        }, 20)