Processing 如何对处理中的两个不同事件使用mousePressed()?
我正在做我的大学项目,遇到了一个问题。我正在为一些数据创建一个可视化,并希望对不同的事件使用mousePressed,但当我尝试将另一个事件添加到mousePressed时,它将不会运行,因为当按下鼠标时,代码不知道要运行哪个事件,它会触发两个事件 我制作了一个事件,允许用户单击主菜单按钮,并希望在用户处于PieChart页面时制作另一个事件,他们可以单击PS_按钮,这是一个PlayStation徽标,以显示说明。现在,用户可以将鼠标悬停在PS_按钮上,并显示说明,但我希望用户单击PS_按钮,以便说明保留在屏幕上。我为描述格式创建了一个类“ImageButton”,如果可能的话,我不确定如何将鼠标按下的代码添加到该类中,并且仍然使用其余的代码 这是我的密码: 在设置绘图页中:鼠标按下-第180行,图片页-第244行 该链接包含代码和代码中使用的数据。 非常感谢您的帮助,谢谢 设置绘图: 当前鼠标按下并注释的是我要添加的代码:Processing 如何对处理中的两个不同事件使用mousePressed()?,processing,Processing,我正在做我的大学项目,遇到了一个问题。我正在为一些数据创建一个可视化,并希望对不同的事件使用mousePressed,但当我尝试将另一个事件添加到mousePressed时,它将不会运行,因为当按下鼠标时,代码不知道要运行哪个事件,它会触发两个事件 我制作了一个事件,允许用户单击主菜单按钮,并希望在用户处于PieChart页面时制作另一个事件,他们可以单击PS_按钮,这是一个PlayStation徽标,以显示说明。现在,用户可以将鼠标悬停在PS_按钮上,并显示说明,但我希望用户单击PS_按钮,以
void mousePressed() {
switch(state) {
case 2: // pie chart page
ClickedMenuButton();
println("Going back to state home from PC");
//state = 1;
break;
case 3: // bubble chart page
ClickedMenuButton();
println("Going back to state home from BG");
break;
case 4: // scatter graph page
ClickedMenuButton();
println("Going back to state home from SG");
break;
default:
// menu
ClickMenu();
}
}
//void mousePressed() {
// if ( mouseX > psImgX && mouseX < (psImgX + PS_Button.width) && mouseY > psImgY && mouseY < (psImgY + PS_Button.height)) {
// psImageDscpt.drawPieChartDscpt();
// }
//}
ImageButton类:
class ImageButton {
String pieDscptLabel;
int xPos1, yPos1, xPos2, yPos2;
float wDiam1, hDiam1;
ImageButton (String pieDscptLabel, int xPos1, int yPos1, float wDiam1, float hDiam1) {
this.pieDscptLabel=pieDscptLabel;
this.xPos1=xPos1;
this.yPos1=yPos1;
this.wDiam1=wDiam1;
this.hDiam1=hDiam1;
}
void drawPieChartDscpt() { //draws the bubbles description
noFill();
stroke(225);
rect(xPos1, yPos1, wDiam1, hDiam1, 20);
textAlign(LEFT, BASELINE);
fill(200);
text(pieDscptLabel, xPos1+10, yPos1+20);
}
void mousePressed() {
if ( mouseX > psImgX && mouseX < (psImgX + PS_Button.width) && mouseY > psImgY && mouseY < (psImgY + PS_Button.height)) {
psImageDscpt.drawPieChartDscpt();
println("it works");
}
}
}
你不需要写两个mousePressed方法,只需测试方法中的情况,以区分你正在处理的情况,阅读一些内容后,我认为当用户在pieChartPage上时,你的状态变量等于2,所以我将你的代码移到第一个mousePressed中并添加了测试,draw description的方法调用工作正常,但用户单击时,必须将其更改为在可见/不可见(而不是绘图)之间切换,以下是更新的代码:
void mousePressed() {
if(state == 2)
{
if ( mouseX > psImgX && mouseX < (psImgX + PS_Button.width) && mouseY > psImgY && mouseY < (psImgY + PS_Button.height))
{
psImageDscpt.drawPieChartDscpt();
}
}
switch(state) {
case 2: // pie chart page
ClickedMenuButton();
println("Going back to state home from PC");
//state = 1;
break;
case 3: // bubble chart page
ClickedMenuButton();
println("Going back to state home from BG");
break;
case 4: // scatter graph page
ClickedMenuButton();
println("Going back to state home from SG");
break;
default:
// menu
ClickMenu();
}
}
其次,更改“单击Playstation图像”事件以反转上一个布尔图像,而不是调用该绘制方法:
void mousePressed() {
if(state == 2)
{
if ( mouseX > psImgX && mouseX < (psImgX + PS_Button.width) && mouseY > psImgY && mouseY < (psImgY + PS_Button.height))
{
//inverte the boolean
show_ps_description=!show_ps_description;
}
}
...
}
你不需要写两个mousePressed方法,只需测试方法中的情况,以区分你正在处理的情况,阅读一些内容后,我认为当用户在pieChartPage上时,你的状态变量等于2,所以我将你的代码移到第一个mousePressed中并添加了测试,draw description的方法调用工作正常,但用户单击时,必须将其更改为在可见/不可见(而不是绘图)之间切换,以下是更新的代码:
void mousePressed() {
if(state == 2)
{
if ( mouseX > psImgX && mouseX < (psImgX + PS_Button.width) && mouseY > psImgY && mouseY < (psImgY + PS_Button.height))
{
psImageDscpt.drawPieChartDscpt();
}
}
switch(state) {
case 2: // pie chart page
ClickedMenuButton();
println("Going back to state home from PC");
//state = 1;
break;
case 3: // bubble chart page
ClickedMenuButton();
println("Going back to state home from BG");
break;
case 4: // scatter graph page
ClickedMenuButton();
println("Going back to state home from SG");
break;
default:
// menu
ClickMenu();
}
}
其次,更改“单击Playstation图像”事件以反转上一个布尔图像,而不是调用该绘制方法:
void mousePressed() {
if(state == 2)
{
if ( mouseX > psImgX && mouseX < (psImgX + PS_Button.width) && mouseY > psImgY && mouseY < (psImgY + PS_Button.height))
{
//inverte the boolean
show_ps_description=!show_ps_description;
}
}
...
}
如果您不知道如何更改drawPieChartDscpt来解决第二个问题,请告诉我好的,我做了您添加的操作,它可以工作,但是我如何做到当用户按下按钮时,说明将保留在该页面的屏幕上。所以,直到他们再次点击相同的按钮,描述才会出现在屏幕上,希望有意义,谢谢你的支持help@migueldivo我编辑了答案来修复这个问题,检查我添加的内容,并尝试了一下,效果非常好。感谢您的帮助,并对您添加的内容进行了很好的解释。非常感谢如果您不知道如何更改drawPieChartDscpt来解决您的第二个问题,请告诉我。好的,我做了您添加的操作,它可以正常工作,但是当用户按下按钮时,说明将保留在该页面的屏幕上。所以,直到他们再次点击相同的按钮,描述才会出现在屏幕上,希望有意义,谢谢你的支持help@migueldivo我编辑了答案来修复这个问题,检查我添加的内容,并尝试了一下,效果非常好。感谢您的帮助,并对您添加的内容进行了很好的解释。非常感谢你不要破坏你的帖子。通过在此网站上发布,您已不可撤销地授予Stack Exchange network在其认为合适的时间内根据发布该内容的权利。有关删除的替代方法,请参阅:不要破坏您的帖子。通过在此网站上发布,您已不可撤销地授予Stack Exchange network在其认为合适的时间内根据发布该内容的权利。有关删除的替代方案,请参见:
void mousePressed() {
if(state == 2)
{
if ( mouseX > psImgX && mouseX < (psImgX + PS_Button.width) && mouseY > psImgY && mouseY < (psImgY + PS_Button.height))
{
//inverte the boolean
show_ps_description=!show_ps_description;
}
}
...
}
void draw() {
switch(state) {
case 2:
// pie chart
pieChartPage();
drawMenuButton();
if(show_ps_description)
psImageDscpt.drawPieChartDscpt();
break;
...
}