【问题标题】:Processing - mousePress image go to function处理 - mousePress 图像转到功能
【发布时间】:2017-04-19 00:47:19
【问题描述】:

我已经使用 menuStart.png 和 menuExit.png 加载并创建了两个图像按钮 menuStart 和 menuExit:

图像(menuStart, 250, 350, 100, 42);

图像(menuExit, 450, 345, 110, 45);

我在做什么: 我已将我的页面设置为阶段。阶段 1 是菜单,阶段 2 是开始屏幕阶段 3 是选择难度屏幕 + 游戏,阶段 4 是退出屏幕,阶段 5 退出游戏。我想使用函数 mousePressed ,这样如果用户在阶段 1 中选择 menuStart 按钮,阶段 = 2。同样,如果用户在阶段 1 中选择 menuExit 按钮,阶段 = 5。

我用代码做了什么: 我已经实现了 mousePressed 但不知道如何在图像参数中为 mousePressed 设置参数。我该如何进行设置?

代码:

void doMenu() {
  // Stage 1 Start -- MENU
  if (stage == 1) {
    textFont(title);
    text("Game", 150, 200);
    textFont(subtitle);
    image(menuStart, 250, 350, 100, 42);
    image(menuExit, 450, 345, 110, 45);
    mousePressed();

    if(mousePressed == true) {
      stage = 2;
    }
  }
  // Stage 2 START
  if (stage == 2) {
    background(255);
    startScreen = loadImage("start.png"); 
    image(startScreen, 0, 0, 800, 500);

    if(mousePressed == true) { // true -->start
      stage = 3; // go-to stage 3
    }
    /* else if(mousePressed == exit && stage != 2 { // exit
      stage = 5; // go-to exit
    }
    */
  }
  if(stage == 3) {
    background(255);
    startScreen = loadImage("start.png"); 
    image(startScreen, 0, 0, 800, 500);
    text("Press N for Normal or H for Hard", 200, 375);

    if(mousePressed == true) { // true --> hard
      hard = true;
      normal = false;
      startMenu = false;
    }
    /*
    else if(mousePressed == normal) { // normal
      hard = false;
      normal = true;
      startMenu = false;
    }
    */
    /*
    if(mousePressed == true) { // easy
      hard = false;
      normal = true;
      startMenu = false;
    }
    */
  }
  // Stage 4 EXIT
  if (stage == 4) { 
  background(0);
  exitScreen = loadImage("exit.jpg"); 
  image(exitScreen, 0, 0, 800, 400);
  textFont(subtitle);
  text("Press X to Exit", 300, 375);
  if(mousePressed == true) {
      stage = 5;
    }
  }
  if(stage == 5) {
    exit();
  }
}

【问题讨论】:

    标签: menu processing imagebutton loadimage mousepress


    【解决方案1】:

    mousePressed 变量无法按照您描述的方式工作。它只是一个boolean 变量,当鼠标被按下时保存true,而在没有按下鼠标时保存false。它不包含有关被点击内容的任何信息。

    要检查点击了什么,您将不得不使用mouseXmouseY 变量和if 语句来检查光标是否在按钮内。一个简单的例子如下所示:

    if(mouseX > buttonX && mouseX < buttonX + buttonWidth && mouseY > buttonY && mouseY < buttonY + buttonHeight){
       //mouse is inside button
    }
    

    如果鼠标被按下并且鼠标在按钮内,则按钮被按下。您可以使用嵌套的if 语句来检查这一点,也可以使用mousePressed() 函数:

    void mousePressed(){
        if(mouseX > buttonX && mouseX < buttonX + buttonWidth && mouseY > buttonY && mouseY < buttonY + buttonHeight){
           //mouse is clicking button
        }
    }
    

    无耻的自我推销:here 是关于在 Processing 中获取使用输入的教程。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多