2017-07-02 9 views
0

私は正弦波を作成していますが、振幅と周波数をマウスで調整できるようにしたいので、これをオンとオフにするボタンを作成しました。それは動作していないようです。 //Button Scriptの部分はボタンが定義されている場所であり、動作するはずですが、実行中にボックスをクリックすると、ifのすべての条件を満たしていても何もしません。 void setup(){ size(1600,900); 0121 }ボタンは処理中の正弦波プロジェクトでは機能しません

//Define variables. 
float amp = 0.0; 
float freq = 0; 
int totalwavelength = 50; 
int mouse = 0; 


void draw(){ 
    background(0); 
    freq = 0; 

    while (freq < totalwavelength) { 
     //When button is not pressed, run this script: 
     if (mouse == 0) { 
      fill(255); 
      ellipse(freq * 50 + 20, sin(amp) * 100 + 450, 20, 20); 
      freq += 1; 
      amp += 0.5; 

      //Create Button 
      fill(255); 
      rect(800, 800, 200, 100); 

      //Mouse Coordinates 
      fill(255, 0, 0); 
      text("X=" + mouseX, mouseX, mouseY - 10); 
      text("Y=" + mouseY, mouseX, mouseY); 

      //Button script 
      if (mouseX >700 && mouseX < 900 && mouseY >750 && mouseY < 850 && mousePressed == true && mouse == 0) { 
       mouse = 1; 
      } 

      if (mouseX >700 && mouseX < 900 && mouseY >750 && mouseY < 850 && mousePressed == true && mouse == 1) { 
       mouse = 0; 
      } 
     } 


     //When button pressed run this script: 
     if (mouse == 1) { 
      fill(255); 
      ellipse(freq * 50 + 20, sin(amp) * 100 + 450, 20, 20); 
      freq += mouseX; 
      amp += mouseY; 

      //Create Button 
      fill(255); 
      rect(800, 800, 200, 100); 

      //Button script 
      if (mouseX >700 && mouseX < 900 && mouseY >750 && mouseY < 850 && 
     mousePressed == true && mouse == 0) { 
       mouse = 1; 
      } 

      if (mouseX >700 && mouseX < 900 && mouseY >750 && mouseY < 850 && 
       mousePressed == true && mouse == 1){ 
       mouse = 0; 
      } 

     } 
    } 
} 

答えて

1

あなたは本当にdebuggingあなたのプログラムの習慣を身に取得する必要があります。それが何をしているのかを正確に把握するために、コードにprintステートメントを追加します。たとえば、ifステートメント内、およびmouse変数を変更するたびにprintステートメントを追加します。

mouseから1に変更するたびに、すぐ次のステップで0に変更されます。

if (mouseX >700 && mouseX < 900 && mouseY >750 && mouseY < 850 && 
    mousePressed == true && mouse == 0) { 
    mouse = 1; 
    println("change mouse to 1 1"); 
} 
if (mouseX >700 && mouseX < 900 && mouseY >750 && mouseY < 850 && mousePressed == true && mouse == 1) { 
    mouse = 0; 
    println("change mouseto 0 1"); 
} 

その最初のif文が1mouseを変更し、mouseか二ifの文チェックが1あると0にそれを変更します。それは、ここで起こっています。

このmouse変数で何をしようとしているのか正確にはわかりませんが、習慣をbreaking your problem down into smaller piecesにして、これらの問題に1つずつ集中する必要があります。言い換えれば、問題を切り分ける必要があります。ボタンを押したときにコンソールに何かを印刷するスケッチ作業を手に入れましょう。問題がある場合は、MCVEを新しい質問の投稿に投稿してください。がんばろう。

+0

ありがとうございました! –

関連する問題