我正在尝试随机选择一个带有值的语句,这些语句从精灵表中的某个点开始绘制。这是我目前的代码。
this.asteroid = Math.floor(Math.random()*4);
switch(this.asteroid)
{
case 1:
this.srcX = 0;
this.srcY = 528;
this.width = 32;
this.height = 33;
break;
case 2:
this.srcX = 32;
this.srcY = 528;
this.width = 32;
this.height = 33;
break;
case 3:
this.srcX = 64;
this.srcY = 528;
this.width = 32;
this.height = 33;
break;
case 4:
this.srcX = 0;
this.srcY = 565;
this.width = 62;
this.height = 60;
break;
}
我稍后会绘制它所选择的值。
问题我有它唯一的绘制紫色/灰色小行星,目前情况为2和3.我在主屏幕上设置了一个字体,告诉我它首先绘制的情况并刷新,直到它显示1或4但它仍然绘制2和3。
答案 0 :(得分:2)
您的代码的方式,它当前生成数字0,1,2和3.因此您应该看到case 1:
出现一些时间,但从不case 4:
。要解决此问题,只需调整案例即可。
就个人而言,我会按如下方式重写此代码:
var srcX = [0,32,64,0],
srcY = [528,528,32,565],
width = [32,32,32,62],
height = [33,33,33,60],
rand = Math.floor(Math.random()*4);
this.srcX = srcX[rand];
this.srcY = srcY[rand];
this.width = width[rand];
this.height = height[rand];
答案 1 :(得分:0)
this.asteroid = Math.floor(Math.random()*4);
应该是
this.asteroid = Math.floor(Math.random()*5)+1;
//因此,您可以计算case 4
上的case 0
和“跳跃”
在控制台中查看: http://jsbin.com/ulirom/3/