0

当 mousePressed() 每 3 秒为假时,我想让文本显示在屏幕上,我在 mousePressed() 函数中设置了一个布尔值“是否”,当它为假时,我从文本文件中获取字符串。但似乎我的逻辑是错误的。有人知道这个问题吗?

Zoog[]zoog = new Zoog[1];
float count=0;
int xpos =0;
int ypos =0;
String message="haha";
String newone="";
String t="\n";
int ntextsize = 20;
int nopacity =200;
int thistime = 0;
int thiscount = 0;
String[]lines;
//Zoog zoog;
boolean whether;

void setup() {
  size(400, 400);
    xpos = int(random(width/2-200, width/2+40));
  ypos = int(random(height/2, height/2-40));
  zoog[0] = new Zoog(xpos,ypos,message,nopacity);
}

void draw(){
  background(255,255,255);

  for(int i=0; i<zoog.length; i++){
//    if(millis()-thistime>4000){
//     zoog[i].disappear(); 
//    }
    zoog[i].jiggle();
    zoog[i].display();


  }
  whether = false;
  lines = loadStrings("data.txt");
  if(whether!=true){
  createnew(int(random(width)), int(random(height)), lines[int(random(lines.length))],150);
  }
}


void mousePressed(){
  whether = true;
   count = count + 1;
 // int thiscount = 0;
  if(count%3 ==0){
    xpos=int(random(30, width-30));
    ypos=int(random(10, height-10));

  }
  else{
    ypos = ypos+50;
  }


 nopacity = int(random(100,255));

 createnew(xpos,ypos,message,nopacity);

}

void createnew(int xxpos, int yyos, String mmessage, int nnopacity){

  Zoog b = new Zoog(xpos,ypos,message,nopacity);
 zoog =(Zoog[]) append(zoog,b);

}

我的问题对应的功能是:

 lines = loadStrings("data.txt");
  if(whether!=true){
  createnew(int(random(width)), int(random(height)), lines[int(random(lines.length))],150);
  }
}

void createnew(int xxpos, int yyos, String mmessage, int nnopacity){

  Zoog b = new Zoog(xpos,ypos,message,nopacity);
 zoog =(Zoog[]) append(zoog,b);

}
4

1 回答 1

0

正如您在对其whether = true进行测试之前调用的那样if(whether!=true),它将始终为真,并且测试不会评估为真,因此块内的代码将不会运行。mousePressed() 在鼠标按下时被调用一次,运行这段代码来了解它是如何工作的:

boolean b;
void setup(){frameRate(10);}
void draw(){ b = false; println("in draw " + b);}
void mousePressed(){b = true;println("in mousePressed " + b);}

看?但是在处理中有一个名为 mousePressed (不带括号)的字段(一个“默认”变量)会按照您的需要运行,只需在 draw 中对其进行测试,运行在 draw 中添加 mousePressed 字段的相同代码将向您展示我的内容意思是:

boolean b;

void setup() {
  frameRate(10);
}

void draw() { 
  b = false; 
  println("in draw " + b); 
  if (mousePressed)println("i'm pressed");
}

void mousePressed() {
  b = true;
  println("im mousePressed " + b);
}

您还可以创建自己的布尔值并在 mousePressed() 中将其设置为 true,在 mouseReleased() 中将其设置为 false。具有相同的效果。

[编辑] 我刚刚想到,还有另一种方式......如果你在 draw 中更改调用,它应该也可以工作:

 lines = loadStrings("data.txt");
  if(whether!=true){
  createnew(int(random(width)), int(random(height)), lines[int(random(lines.length))],150);
   whether = false;// move this here
  }
于 2013-05-20T12:38:54.080 回答