即使鼠标位置在必要的坐标上,文本也不会出现在屏幕上

Text does not appear on screen even if mouse position is on the necessary coordinates

我想在鼠标悬停在xy的特定坐标范围内的条件下打印文本坐标。但是,即使我在代码中声明文本在某个坐标范围内应该打印,文本也无法打印。谁能给我一些关于我应该做什么的建议?任何帮助都将不胜感激。

打印文本的代码在“// Gamma”注释之后

PImage[] imgs;
String[] greekAlphabet = {"Gamma", "Zeta", "Eta", "Kappa", "Lambda", "Phi", "Psi"};

void setup(){
  background(0);
  size(500, 500);
  textSize(50);
  textAlign(CENTER, CENTER);
  
  imgs = new PImage[greekAlphabet.length];
  for (int i = 0; i < imgs.length; i++){
    imgs[i] = loadImage(greekAlphabet[i]+".png");
  }
  
  text("Press Any Key", width/2, height/2);
}

void draw(){
  if (keyPressed){
    background(0);
    text("Choose any clan", width/2, height/2 - 180);
    for (int i = 0; i < imgs.length; i++){
      if (i >= 0 && i <= 3){
        image(imgs[i], (((i)%5 * 120)), 120, 150, 150);        
      }
      else if (i >=4 && i <= 6){
        image(imgs[i], (55+((i)%4 * 120)), 310, 150, 150);        
      }
    }
    
    // Gamma
    if (overImage(25, 120, 140, 250)){
      text("Gamma", width/2, height/2);
    }
    
  }
  println(mouseX + " " + mouseY);
}

boolean overImage(int x1, int x2, int y1, int y2){
  if ((mouseX >= x1 && mouseX <= x2) && (mouseY >= y1 && mouseY <= y2)){
    return true;
  }
  else{
    return false;
  } 
}

如上所述,需要删除 if(keyPressed)。以下适用于我的系统。我将图像更改为用于测试目的的图像;您需要将它们改回您的设置。我还添加了一个额外的显示功能来简化一些事情。可能有更多的优化可以完成。确保 _imgW 和 _imgH 值对于您的图像是正确的。

PImage[] imgs;
String[] greekAlphabet = {"Gamma", "Omega", "Delta", "Alpha", "Sigma", "Phi", "Psi"};
final int _imgW = 150;
final int _imgH = 150;

void displayImages() {
  text("Choose any clan", width/2, height/2 - 180);
  for (int i = 0; i < imgs.length; i++) {
    if (i >= 0 && i <= 3) {
      image(imgs[i], (((i)%5 * 120)), 120, _imgW, _imgH);
    } else if (i >=4 && i <= 6) {
      image(imgs[i], (55+((i)%4 * 120)), 310, _imgW, _imgH);
    }
  }
}

void setup() {
  background(0);
  size(600, 500);
  textSize(30);
  textAlign(CENTER, CENTER);
  imgs = new PImage[greekAlphabet.length];
  for (int i = 0; i < imgs.length; i++) {
    imgs[i] = loadImage(greekAlphabet[i]+".png");
  }
}

void draw() {
  background(0);
  displayImages();
  if (overImage(0, 120)) {
    text("Gamma", 120, 20);
  }
  if (overImage(120, 120)) {
    text("Omega", 120, 20);
  }
  if (overImage(240, 120)) {
    text("Delta", 120, 20);
  }
  if (overImage(360, 120)) {
    text("Alpha", 120, 20);
  }
  if (overImage(55, 310)) {
    text("Sigma", 120, 20);
  }
  if (overImage(175, 310)) {
    text("Phi", 120, 20);
  }
  if (overImage(245, 310)) {
    text("Psi", 120, 20);  
  }
   println("x = ", mouseX + " : " + "y =", mouseY);
}

boolean overImage(int x, int y) {
  if (mouseX >= x && mouseX <= x+_imgW && mouseY >= y && mouseY <= y+_imgH) {
    return true;
  } else {
    return false;
  }
}