Java 处理、替换文本

Java 处理、替换文本,java,text,processing,Java,Text,Processing,我现在得到了一张海报的代码,我正试图为一项研究制作一张海报(我要把它全部写出来,因为它可能是相关的): packageinteractiveeposter; 导入处理.core.PApplet; 导入加工.core.PImage; 公共类InteractivePoster扩展了PApplet{ //声明变量: PImage[]imgs=新PImage[12]; int i=0; 布尔引入=真; 布尔故事板文本=真; 布尔特征=真; int picWidth=300; int picHeight=

我现在得到了一张海报的代码,我正试图为一项研究制作一张海报(我要把它全部写出来,因为它可能是相关的):

packageinteractiveeposter;
导入处理.core.PApplet;
导入加工.core.PImage;
公共类InteractivePoster扩展了PApplet{
//声明变量:
PImage[]imgs=新PImage[12];
int i=0;
布尔引入=真;
布尔故事板文本=真;
布尔特征=真;
int picWidth=300;
int picHeight=200;
PImage故事板;
皮麦手机;
//设置窗口大小并加载图像:
公共作废设置(){
规模(750900);
光滑的();
storyboard=loadImage(“C:/Users/Frederik/Desktop/Medialogy AAU/Images/storyboardfixed.png”);
故事板。调整大小(270757);
phone=loadImage(“C:/Users/Frederik/Desktop/Medialogy AAU/Images/phone.PNG”);
电话。调整大小(300500);
}
//所有应连续运行的都将进入抽签:
公众抽签(){
背景(255255);
文本对齐(中心);
文本大小(24);
填充(0);
文本(“创意游戏-应用技术”,宽度/2,50);
文本大小(16);
填充(120);
文本(“B-341”,宽度/2900);
图像(故事板,50100);
图像(电话:385140);
int-tboxPos=50;
tboxPos=tboxPos+335;
如果(介绍==错误){
特征=真;
案文(“案文1……导言”,490230);
}
如果(故事板文本==false){
文本(“文本2…故事板”,480230);
}
如果(特征==false){
文本(“文本3……特征”,480230);
引言=正确;
}
填充(0,0,0);
rect(tboxPos,7003001007);//FrameRect
填充(102204255);
rect(tboxPos,700,300,50,7);//简介rect
填充(255255);
文本大小(20);
文本(“导言”,tboxPos+150730);
填充(102204255);
rect(tboxPos,750,150,50,7);//故事板rect
填充(255255);
文本大小(20);
文本(“故事板”,tboxPos+75780);
填充(102204255);
rect(tboxPos+150750150507);//特性rect
填充(255255);
文本大小(20);
文本(“特征”,tboxPos+225780);
}
//检查是否在其中一个图像上单击鼠标,然后将该变量从true更改为false或相反
公共无效鼠标单击(){
如果(鼠标>385&&mouseX<685&&mouseY>700&&mouseY<750)
{
如果(简介=true)简介=false;
else-introduction=true;
}
如果(鼠标>385&&mouseX<535&&mouseY>750&&mouseY<800)
{
如果(storyboardtext==true)storyboardtext=false;
else storyboardtext=true;
}
如果(鼠标>535&&mouseX<685&&mouseY>750&&mouseY<800)
{
如果(features==true)features=false;
else特征=真;
}
}
}
海报:

因此,当你按下智能手机下方的按钮时,相关文本就会出现。现在,它可以单独工作,我单击“介绍”,但要查看其他的介绍,我必须再次单击“介绍”,使其首先消失。 我需要做的是,当单击另一个按钮时,将文本替换为另一个

我试着在if语句中把其他文本置为真,但它只对其中一些文本有效,其他文本则被屏蔽了

另一个想法是在void mouseClicked()中做一些事情,但我不确定是什么


非常感谢您的帮助,谢谢=)

现在,您只需为每个按钮设置一个变量。相反,您要做的是设置所有变量

以下是一个例子:

if(mouseX > 385 && mouseX < 685 && mouseY > 700 && mouseY < 750){
   if(introduction == true){
      introduction = false;
   }
   else{
      features = false
      storyboardtext = false;
      introduction = true;
   }
}
if(mouseX>385&&mouseX<685&&mouseY>700&&mouseY<750){
如果(引言==true){
引言=假;
}
否则{
特征=假
故事板文本=假;
引言=正确;
}
}
顺便说一下,您可以缩短以上所有时间:

if(mouseX > 385 && mouseX < 685 && mouseY > 700 && mouseY < 750){
   features = false
   storyboardtext = false;
   introduction = !introduction;
}
if(mouseX>385&&mouseX<685&&mouseY>700&&mouseY<750){
特征=假
故事板文本=假;
简介=!简介;
}

你也可以考虑使用<代码> EnUM <代码>代替3个单独的<代码>布尔值。

< P>我建议使用一个整数来跟踪状态,更多的状态布尔变得更难管理,更容易出错。 以下是一个基本示例:

final int INTRODUCTION = 0;
final int STORYBOARD = 1;
final int FEATURES = 2;
int state = INTRODUCTION;

void draw(){
  switch(state){
    case INTRODUCTION:
      drawIntroduction();
    break;
    case STORYBOARD:
      drawStoryboard();
    break;
    case FEATURES:
      drawFeatures();
    break;
  }
}

void drawIntroduction(){
  background(0);
  fill(255);
  text("Introduction",15,15);
}
void drawStoryboard(){
  background(255);
  fill(0);
  text("Storyboard",15,55);
}
void drawFeatures(){
  background(192);
  fill(64);
  text("Features",15,95);
}

void keyReleased(){
  state = (state + 1) % 3;//cycle through states to test
}
我建议使用单独的函数来绘制每个状态,以保持代码整洁。按任意键在状态间循环

上述内容大致适合您的代码,看起来有点像这样:

package interactiveposter;
import processing.core.PApplet;
import processing.core.PImage;


public class InteractivePoster extends PApplet {
// Declare variables:

    PImage[] imgs = new PImage[12]; 
    int i = 0;
    int picWidth = 300;
    int picHeight = 200;
    PImage storyboard;
    PImage phone;

    final int INTRODUCTION = 0;
    final int STORYBOARD = 1;
    final int FEATURES = 2;
    int state = INTRODUCTION;


// Set size of window and load images:

    public void setup() {
        size(750,900);
        smooth();
        storyboard = loadImage("C:/Users/Frederik/Desktop/Medialogy AAU/Images/storyboardfixed.png");
        storyboard.resize(270, 757);
        phone = loadImage("C:/Users/Frederik/Desktop/Medialogy AAU/Images/phone.PNG");
        phone.resize(300, 500);
    }

// All that should run continuously goes in draw:

    public void draw() {
        background(255,255,255);
        textAlign(CENTER);
        textSize(24);
        fill(0);
        text("Creative Play - Applied Technology",width/2,50); 
        textSize(16);
        fill(120);
        text("B-341",width/2,900);
        image(storyboard, 50, 100);
        image(phone, 385, 140);

        int tboxPos = 50;
        tboxPos=tboxPos+335;
        if(state == INTRODUCTION) {
            text("Text 1...Introduction", 490, 230);
        }

        if(state == STORYBOARD) {
            text("Text 2...Storyboard", 480, 230);
        }
        if(state == FEATURES) {
            text("Text 3...Features", 480, 230);
        }



        fill(0,0,0);
        rect(tboxPos,700, 300, 100, 7); //FrameRect

        fill(102,204,255);
        rect(tboxPos, 700, 300, 50, 7); //IntroductionRect
        fill(255,255,255);
        textSize(20);
        text("Introduction", tboxPos+150, 730);

        fill(102,204,255);
        rect(tboxPos, 750, 150, 50, 7); // StoryboardRect
        fill(255,255,255);
        textSize(20);
        text("Storyboard", tboxPos+75, 780);

        fill(102,204,255);
        rect(tboxPos+150, 750, 150, 50, 7); //FeaturesRect
        fill(255,255,255);
        textSize(20);
        text("Features", tboxPos+225, 780);
    }

// Check if mouse is clicked on one of the images, then change that variable from true to false or opposite

    public void mouseClicked() {
        if(mouseX > 385 && mouseX < 685 && mouseY > 700 && mouseY < 750)
        {
          state = INTRODUCTION;
        }
        if(mouseX > 385 && mouseX < 535 && mouseY > 750 && mouseY < 800)
        {
            state = STORYBOARD;
        }
        if(mouseX > 535 && mouseX < 685 && mouseY > 750 && mouseY < 800)
        {
            state = FEATURES;
        }
    }

}
packageinteractiveeposter;
导入处理.core.PApplet;
导入加工.core.PImage;
公共类InteractivePoster扩展了PApplet{
//声明变量:
PImage[]imgs=新PImage[12];
int i=0;
int picWidth=300;
int picHeight=200;
PImage故事板;
皮麦手机;
最终int简介=0;
最终int故事板=1;
最终整数特征=2;
int state=引言;
//设置窗口大小并加载图像:
公共作废设置(){
规模(750900);
光滑的();
storyboard=loadImage(“C:/Users/Frederik/Desktop/Medialogy AAU/Images/storyboardfixed.png”);
故事板。调整大小(270757);
phone=loadImage(“C:/Users/Frederik/Desktop/Medialogy AAU/Images/phone.PNG”);
电话。调整大小(300500);
}
//所有应连续运行的都将进入抽签:
公众抽签(){
背景(255255);
文本对齐(中心);
文本大小(24);
填充(0);
文本(“创意游戏-应用技术”,宽度/2,50);
文本大小(16);
填充(120);
文本(“B-341”,宽度/2900);
图像(故事板,50100);
图像(电话:385140);
int-tboxPos=50;
tboxPos=
package interactiveposter;
import processing.core.PApplet;
import processing.core.PImage;


public class InteractivePoster extends PApplet {
// Declare variables:

    PImage[] imgs = new PImage[12]; 
    int i = 0;
    int picWidth = 300;
    int picHeight = 200;
    PImage storyboard;
    PImage phone;

    final int INTRODUCTION = 0;
    final int STORYBOARD = 1;
    final int FEATURES = 2;
    int state = INTRODUCTION;


// Set size of window and load images:

    public void setup() {
        size(750,900);
        smooth();
        storyboard = loadImage("C:/Users/Frederik/Desktop/Medialogy AAU/Images/storyboardfixed.png");
        storyboard.resize(270, 757);
        phone = loadImage("C:/Users/Frederik/Desktop/Medialogy AAU/Images/phone.PNG");
        phone.resize(300, 500);
    }

// All that should run continuously goes in draw:

    public void draw() {
        background(255,255,255);
        textAlign(CENTER);
        textSize(24);
        fill(0);
        text("Creative Play - Applied Technology",width/2,50); 
        textSize(16);
        fill(120);
        text("B-341",width/2,900);
        image(storyboard, 50, 100);
        image(phone, 385, 140);

        int tboxPos = 50;
        tboxPos=tboxPos+335;
        if(state == INTRODUCTION) {
            text("Text 1...Introduction", 490, 230);
        }

        if(state == STORYBOARD) {
            text("Text 2...Storyboard", 480, 230);
        }
        if(state == FEATURES) {
            text("Text 3...Features", 480, 230);
        }



        fill(0,0,0);
        rect(tboxPos,700, 300, 100, 7); //FrameRect

        fill(102,204,255);
        rect(tboxPos, 700, 300, 50, 7); //IntroductionRect
        fill(255,255,255);
        textSize(20);
        text("Introduction", tboxPos+150, 730);

        fill(102,204,255);
        rect(tboxPos, 750, 150, 50, 7); // StoryboardRect
        fill(255,255,255);
        textSize(20);
        text("Storyboard", tboxPos+75, 780);

        fill(102,204,255);
        rect(tboxPos+150, 750, 150, 50, 7); //FeaturesRect
        fill(255,255,255);
        textSize(20);
        text("Features", tboxPos+225, 780);
    }

// Check if mouse is clicked on one of the images, then change that variable from true to false or opposite

    public void mouseClicked() {
        if(mouseX > 385 && mouseX < 685 && mouseY > 700 && mouseY < 750)
        {
          state = INTRODUCTION;
        }
        if(mouseX > 385 && mouseX < 535 && mouseY > 750 && mouseY < 800)
        {
            state = STORYBOARD;
        }
        if(mouseX > 535 && mouseX < 685 && mouseY > 750 && mouseY < 800)
        {
            state = FEATURES;
        }
    }

}