1

タイトルとして、Processingで実現したいこと:

画面上を横切って走っている古典的な円があります、そして:

初めてマウスをクリックすると、すべての円がフリーズします(移動を停止します)。

2回目にマウスをクリックすると、マウスの位置で新しい円が描画されます。

問題は次のとおりです。コンピュータに異なる動作をするように指示するにはどうすればよいですか。結局のところ、それらはすべてクリックであり、コンピュータには同じように見えます。

処理中に何かがすでに発生したかどうかを検出することを考えています(最初のクリックなど)。それができない場合、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
}

ただし、インタラクションはおそらく直感的ではないためです。私の意見では、(特にユーザーにとって) シンプルなものほど良いと思います。

HTH

于 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 に答える