切换句柄多维数组.意外结果

Switch handle multidimensional array. Unexpected result

本文关键字:数组 意外 结果 句柄      更新时间:2023-09-26

所以我有一个javascript函数,它将多维数组值推送到参数,如下所示:

function mouseHandle(x,y){
    for(var i=0; i<buttonPos.length; i++){
        if(x>buttonPos[i][0] && x<buttonPos[i][2]){
            if(y>buttonPos[i][1] && y<buttonPos[i][3]){
                eventButton(buttonPos[i][4]);
            };
        };
    };
};

这按下了 buttonPos[i][4] 到 eventButton 函数,它是:

function eventButton(d){
    switch(d){
        case 0: // STARTBUTTON
            alert("Button");
            break;
        default:
            alert("NoButton");
    };
};

数组在 drawButton 函数中设置如下:

function drawButton(x,y,width,height,string,event){
    xCenterButton=x+(width/2);
    yCenterButton=y+(height/2);
    ctx.fillStyle="rgba(242,255,195,1)";
    ctx.fillRect(x,y,width,height);
    ctx.rect(x,y,width,height);
    ctx.fillStyle="rgba(0,0,0,1)";
    ctx.stroke();
    ctx.font="25px Arial";
    fontSize = getFontSize();
    centerNum = fontSize/4;
    ctx.fillStyle="rgba(0,0,0,1)";
    ctx.textAlign="center";
    ctx.fillText(string,xCenterButton,yCenterButton+centerNum);
    buttonPos.push([[x],[y],[x+width],[y+height],[event]]);
};

然后,我在menuStart函数中调用该函数,如下所示:

function menuStart(){
    drawButton(getCenterX(100),getCenterY(50),100,50,"Start",0);
};

因此,mouseHandle 函数确实按预期为 eventButton 函数提供了 0 参数(我在默认情况下提醒了"d"参数)。但是,就好像 switch 语句无法识别 0,因为它使用默认大小写并提醒"NoButton"。

知道为什么这不起作用吗?

注意 - JSFIDDLE 按照要求。 :: http://jsfiddle.net/jWFwX/

首先解析 d 和 int。工作 JSFiddle

新代码:

function eventButton(d){
    var buttonInt = parseInt(d);
    switch(buttonInt){
    case 0: // STARTBUTTON
        alert("Button");
        break;
    default:
        alert("NoButton");
        alert(d);
    };
};