1

作为标题,我想通过处理实现:

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

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

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

问题是:如何告诉计算机采取不同的行动?毕竟都是点击,对电脑来说都是一样的。

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

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

4

2 回答 2

1

我认为这主要取决于您对交互的设想。它可以像您认为合适的那样简单或复杂。

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

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

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.使用按钮和组合键。例如 aSHIFT+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
}

不过,这作为一种交互可能不太直观。在我看来,事情越简单(尤其是对用户而言)越好。

高温高压

于 2012-09-18T14:59:35.257 回答
0

如果我对您的理解正确,您是在问“我如何跟踪状态”。也就是说,要知道是“冻结”还是“画圈”。

你可以用一个简单的变量来做到这一点:

boolean freezeState = false;


void mousePressed(){

 if (freezeState == false){
    freezeState = true;

   // call method to freeze circles

 else if (freezeState == true){
   freezeState = false;

   // call method to draw circle
}
于 2012-09-19T00:08:02.683 回答