回答編集履歴

1

追記

2019/11/12 21:05

投稿

thkana
thkana

スコア7639

test CHANGED
@@ -83,3 +83,83 @@
83
83
  }
84
84
 
85
85
  ```
86
+
87
+
88
+
89
+ ---
90
+
91
+ 追記
92
+
93
+ コメント、編集されていますがforでやりたいいうような旨が書かれていたかと。
94
+
95
+ Processingの構造がそもそもdraw()の合間に描画する、ということを想定しているようで、draw()から抜けないで描画のトリガを掛ける方法もあるのかも知れませんが私は知りません。
96
+
97
+ ```Processing
98
+
99
+ void setup(){
100
+
101
+ size(300,300);
102
+
103
+ }
104
+
105
+ int x=0;
106
+
107
+ void draw(){
108
+
109
+ for(;;){
110
+
111
+ circle(x,height/2,50);
112
+
113
+ x=(x+2)%width;
114
+
115
+ delay(20);
116
+
117
+ println(x);
118
+
119
+ }
120
+
121
+ }
122
+
123
+ ```
124
+
125
+ では、xの値が増えていくのがコンソール(IDEウインドウの下の方)では見えますが描画は最初の方だけちょこっと行われるだけ、そのタイミングも実行毎にばらつきます。制御出来ていないということ。
126
+
127
+ なので、アニメーションはforループで行わない、というのが原則ではないでしょうか。
128
+
129
+ ```
130
+
131
+ void draw(){
132
+
133
+ for(int x=0; x<width; x++){
134
+
135
+ circle(x,height/2,50);
136
+
137
+ }
138
+
139
+ }
140
+
141
+ ```
142
+
143
+ ではなく、これを展開して
144
+
145
+ ```Processing
146
+
147
+ int x=0;
148
+
149
+ void draw(){
150
+
151
+ if(x>=width){
152
+
153
+ x=0;
154
+
155
+ }
156
+
157
+ circle(x,height/2,50);
158
+
159
+ x++;
160
+
161
+ }
162
+
163
+ ```
164
+
165
+ とすれば「動いて」みえると思います。