1

我是编码新手,目前我在一个让我们使用处理 3 和 java 的课程中​​。我正在做一个项目,试图设置一个 mousePressed() 动作,以便出现 3 个静态图像但它没有出现。(对不起,如果这是一个愚蠢的问题)。

这是代码

PImage [] pics = new PImage [11];

int base=0;
int top=10;
int dollar=9;

boolean notPressed = true;

void setup() {
  size(1200, 750);
  background(255);
  imageMode(CENTER);

  for (int i=0; i<11; i++) {
    pics[i] = loadImage("pic"+i+".png");
  }
}

void draw() {

  translate(500, 275);
  if (notPressed) {
    image(pics[int(random(1, 8))], 100, 100);
  } else {
    image(pics[base], 100, 100);
  }
  image(pics[top], 100, 100);
  image(pics[dollar], 100, mouseY);
}

pushMatrix();
translate(500, 275);
image(pics[int(random(pics.length))], 100, 100);
popMatrix();

pushMatrix(); //moves dollar up and down 
translate(500, 275);
image(pics[0], 100, 100);//base
image(pics[9], 100, mouseY);//dollar
popMatrix();
}

void mousePressed() {  
  notPressed=false;
}

void keyPressed() {
}
4

3 回答 3

2

据我了解,这就是您要查找的内容:

PImage [] pics = new PImage [11];
int base=0;
int top=10;
int dollar=9;

boolean show = false;//new variable to show/hide the images

void setup(){
 size(1200, 750);
 background(255);
 imageMode(CENTER);

for (int i=0; i<11; i++){
  pics[i] = loadImage("pic"+i+".png");
  }
 }
 
void draw() {
 background(255); //reset background after each draw
  
 if(show)//check if we should draw or not
 {
   image(pics[base], 100, 100);
   image(pics[top], 100, 100);
   image(pics[dollar], 100, mouseY);
 }
}

 void mousePressed(){
  show=true;
 }

我添加了一个变量来显示/隐藏图像并删除了所有与您解释的内容无关的翻译/矩阵推送/弹出

于 2021-05-13T01:28:14.080 回答
1

我建议使用在按下鼠标时会发生变化的条件。您可以发表声明,与@YOUSFI Mohamet Walid的建议if略有不同:

PImage [] pics = new PImage [11];
int base=0;
int top=10;
int dollar=9;

boolean mouseHasNotBeenPressed = true;

void setup() {
  size(1200, 750);
  background(255);
  imageMode(CENTER);

  for (int i=0; i<11; i++) {
    pics[i] = loadImage("pic"+i+".png");
  }
}

void draw() {
  background(255); //reset background after each draw

  translate(500, 275);
  if (mouseHasNotBeenPressed) {//check if mouse has been pressed yet
    image(pics[int(random(1, 8))], 100, 100);
  } else {
    image(pics[base], 100, 100);
  }
  image(pics[top], 100, 100);
  image(pics[dollar], 100, mouseY);
}

void mousePressed() {
  mouseHasNotBeenPressed=false;
}

在这个版本中,基本上有三层:

  1. 底层显示了一张随机图片,索引在 1 到 8 之间。
  2. 中间层显示pics[0]
  3. 顶层显示pics[9]鼠标级别的美元 ( )。

鼠标点击后,底层不再随机​​选择图片展示。相反,它显示pics[10]每一帧。

于 2021-05-13T02:58:17.223 回答
0

这是正确的代码

boolean notPressed = false;

void setup();
//

void draw();

 if (notPressed) {
    image(pics[int(random(1, 8))], 100, 100);
  } else {
    image(pics[top], 100, 100);
  }
  image(pics[dollar], 100, mouseY);
  image(pics[base], 100, 100);

  void mousePressed();
  notPressed=false;
于 2021-05-13T04:25:22.743 回答