Javascript html5 canvas随机切换语句

时间:2013-03-05 15:33:22

标签: javascript html5 canvas switch-statement

我正在尝试随机选择一个带有值的语句,这些语句从精灵表中的某个点开始绘制。这是我目前的代码。

    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。

2 个答案:

答案 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/