0

だから私は次のように多次元配列値をパラメータにプッシュする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」パラメーターを警告しました)。ただし、デフォルトのケースを使用して 'NoButton' を警告するため、switch ステートメントが 0 を認識しないかのようです。

なぜこれが機能しないのですか?

注 - 要求どおりの JSFIDDLE。:: http://jsfiddle.net/jWFwX/

4

1 に答える 1

1

最初に d と int を解析します。ワーキングJSFiddle

新しいコード:

function eventButton(d){
    var buttonInt = parseInt(d);
    switch(buttonInt){
    case 0: // STARTBUTTON
        alert("Button");
        break;
    default:
        alert("NoButton");
        alert(d);
    };
};
于 2013-09-27T13:44:50.547 に答える