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