У меня есть функция кнопки в моей программе.В основном работает, но когда я нажимаю, он не выполняет if.Код включен - PullRequest
0 голосов
/ 05 июня 2018
var rectbutton = function(x,y,width,height,bevel,label,basecolor,textcolor,hovercolor,changevar,changevarvalue){
textAlign(CENTER,CENTER);
textSize(height);
fill(basecolor);
rect(x-width/2,y-height/2,width,height,bevel);
fill(textcolor);
text(label,x,y+5);
if(mouseX>=x-width/2 && mouseX<=x+width/2 && mouseY>=y-height/2 && mouseY<=y+height/2){
    fill(hovercolor);
    rect(x-width/2,y-height/2,width,height,bevel);
    fill(textcolor);
    text(label,x,y+5);
    if(mouseIsPressed){
        var changevar=changevarvalue;
    }
}
}; 

Использование: rectbutton(200,250,250,50,5,"PLAY",color(255,255,255),color(0,0,0),color(255,0,0),playerState,1);

Все работает, пока я не нажму.Не устанавливает changevar на changevarvalue.Пробовал changevar=changevarvalue; вместо var changevar=changevarvalue;

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

В js объекты передаются по ссылке, а примитивы передаются по значению.Если вы хотите обновить переменную changevar, вам нужно будет передать объект в параметре changevar при вызове функции rectbutton, а не примитивного значения.Я предполагаю, что playerState содержит некоторый примитив, а не объект в качестве значения.

0 голосов
/ 05 июня 2018

В вашем урезанном коде нигде не определено mouseIsPressed, он отсутствует?Возможно, вам потребуется предоставить нам более полный пример кода.

Также попробуйте взглянуть на свою консоль, если возникнут какие-либо ошибки JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...