だから私は次のように多次元配列値をパラメータにプッシュする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/