处理:如何使mouseClicked功能与点击次数不同?

时间:2012-09-18 14:18:41

标签: input click processing

作为标题,我想通过Processing实现的目标:

屏幕上有经典的圆圈,然后:

第一次单击鼠标时,所有圆圈都会冻结(停止移动);

第二次单击鼠标时,用鼠标位置绘制一个新圆圈。

问题是:如何告诉计算机采取不同的行动?毕竟,它们都是点击,看起来与计算机相同。

我正在考虑检测Processing中是否已经发生了某些事情(比如第一次点击)。如果无法完成,我可以使用javascript这样做吗?无论如何我想把它放在浏览器上。

有人知道吗?非常感谢你。

1 个答案:

答案 0 :(得分:1)

我认为这主要取决于你如何设想互动。它可以是您认为合适的简单或复杂。

如果有帮助,这里有几点想法:

1.对不同的mouse buttons使用不同的操作(例如,常规/左键单击会生成一个新圆圈,右键单击会将现有圆圈移动到所需位置):

void draw(){
  color bg = color(0);
  if(mousePressed){
    if(mouseButton == LEFT )  bg = color(192,0,0);
    if(mouseButton == CENTER) bg = color(0,192,0);
    if(mouseButton == RIGHT)  bg = color(0,0,192);
  }
  background(bg);  
}

2.使用按钮和组合键。例如,SHIFT+CLICK执行单独的操作而不是默认操作:

void draw(){
  color bg = color(0);//default
  if(mousePressed && keyPressed && keyCode == SHIFT) bg = color(255,192,0);//shift+click
  background(bg);  
}

3.跟踪点击次数并使用点击次数提示不同的状态:

int numClicks = 0;

void draw(){
  background(numClicks*25);  
}
void mousePressed(){
  numClicks++;
  if(numClicks > 10) numClicks = 0;//reset after 10 'states'/different clicks
}

这虽然可能不那么直观。在我看来,更简单的事情(特别是对用户而言)越好。

HTH