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;
}
}
}