teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

動作確認、修正結果を追記

2019/11/09 12:38

投稿

dodox86
dodox86

スコア9416

answer CHANGED
@@ -7,4 +7,34 @@
7
7
  }
8
8
  ```
9
9
 
10
- `int`型にキャストしたらどうでしょうか。```if (int(frameCount / (frameRate * 0.5)) % 2 == 0)```
10
+ `int`型にキャストしたらどうでしょうか。```if (int(frameCount / (frameRate * 0.5)) % 2 == 0)```
11
+
12
+ ---
13
+ **追記しました:2019-11-09 21:37**
14
+
15
+ 動作を確認させていただきました。ご提示のコードをよくよく拝見すると、0.5秒ごとに点滅する意図であるものの、その前に`Thread.sleep(1000);`とのように1000ミリ秒スリープしているので、点滅間隔は常に1秒になってしまいます。まず、ここを100ミリ秒にします。更に、先の私の回答で`if (int(frameCount / (frameRate * 0.5)) % 2 == 0)`と`int`型にキャストする部分を`if (int(frameCount / (frameRate * 0.5) % 2) == 0) `と修正し、最終的に`SubThread`クラスの`run`メソッドを以下のようにしたところ、500ミリ秒ごとに緑・黒・緑・黒・・・と点滅するようになりました。
16
+ ```Processing
17
+ public void run() {
18
+ while (running) {
19
+ try {
20
+ //G = 255;
21
+ //G = 0;
22
+ println("I am Sleeping...");
23
+ // 100ミリ秒待機
24
+ Thread.sleep(100);
25
+ }
26
+ catch( InterruptedException ex) {
27
+ ex.printStackTrace();
28
+ }
29
+ // 点滅間隔|0.5[sec]
30
+ // if (frameCount / (frameRate * 0.5) % 2 ==0) {
31
+ if (int(frameCount / (frameRate * 0.5) % 2) == 0) {
32
+ G = 255;
33
+ } else {
34
+ G = 0;
35
+ }
36
+ }
37
+
38
+ println("Sub Thread exit");
39
+ }
40
+ ```