我正在进行一项涉及制作六个模具面的界面的小练习。我的目标是当我将鼠标悬停在每个模具面上时改变颜色。我遇到的问题是我只能改变第一个模具面的颜色,而不是前进的颜色。我一直不愿意来这里问,因为我觉得我的问题是如此微不足道,但我一直试图让这个问题在过去的4天里发挥作用,我无法弄明白。我觉得有一些关于迭代的事情,我还没有理解。
Dice[] dice = new Dice[6];
void setup(){
size(600,100);
for(int i = 0; i < dice.length; i++){
dice[i] = new Dice(i*100,0,100,100);
}
imageMode(CORNER);
}
void draw(){
for(int i = 0; i < dice.length; i++){
for(int j = 0; j < dice.length; j++){
if(j!=i && dice[i].checkHover(mouseX,mouseY)){
dice[i].drawDice(i,true);
} else {
dice[i].drawDice(i,false);
}
}
}
}
class Dice{
PImage[] diceFace = new PImage[6];
PImage[] diceFaceHover = new PImage[6];
int x;
int y;
int w;
int h;
Dice(int bx, int by, int bw, int bh){
x = bx;
y = by;
w = bw;
h = bh;
for(int i = 0; i < dice.length; i++){//loads the images
diceFace[i] = loadImage(i+".png");
diceFaceHover[i] = loadImage(i+"h.png");
}
}
void drawDice(int i, boolean hover){
if(hover){
image(diceFaceHover[i],x,y,w,h);
} else {
image(diceFace[i],x,y,w,h);
}
}
boolean checkHover(float mx, float my){
if((mx > x && mx < w) && (my > y && my < h)){
return true;
} else {
return false;
}
}
}
我会在此期间继续寻找解决方案。
答案 0 :(得分:2)
您检查悬停的条件不佳。不要忘记w
和h
对于所有骰子都相同,但您需要的位置不是大小。
if( (mx > x & mx < x+w) && ( my >y && my < y+h ) )