1

我正在尝试随机选择其中包含值的语句,该语句从精灵表中的某个点绘制。这是我拥有的当前代码。

    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。

4

2 回答 2

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];
于 2013-03-05T15:41:22.113 回答
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/

于 2013-03-05T15:40:08.707 回答