即使鼠标位置在必要的坐标上,文本也不会出现在屏幕上
Text does not appear on screen even if mouse position is on the necessary coordinates
我想在鼠标悬停在x和y的特定坐标范围内的条件下打印文本坐标。但是,即使我在代码中声明文本在某个坐标范围内应该打印,文本也无法打印。谁能给我一些关于我应该做什么的建议?任何帮助都将不胜感激。
打印文本的代码在“// 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;
}
}
我想在鼠标悬停在x和y的特定坐标范围内的条件下打印文本坐标。但是,即使我在代码中声明文本在某个坐标范围内应该打印,文本也无法打印。谁能给我一些关于我应该做什么的建议?任何帮助都将不胜感激。
打印文本的代码在“// 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;
}
}