大きさや色が変化する
描いた図形の大きさあるいは色を画面上で変化させてみます。 少しずつ変化させながら、描画を繰り返すことで、アニメーションのように図形が動きます。大きさを変える
リストT1-1-1(円をひとつ描く例)を変更して、直径がだんだん大きくなり、一定の値まで大きくなったら小さくなるようにします。円の直径を指定する変数dを用意し、dの値をdraw()の中で変化させます。円の位置(35, 35)はこの例では変化しないので、それぞれ定数変数xとyに入れておきます。 draw()の中で次のように書けば、円の直径は1ずつ増え、描かれる円の大きさが大きくなります。
d = d + 1; // dに1を加える ellipse(x, y, d);ただ、これでは大きくなる一方向です。直径dが一定の大きさ(max)になったら、変化量をマイナス1にして、円が小さくなるようにします。また、円の直径がゼロ未満になったら、今度は変化量をプラス1に変えます。つまり、変化量を入れる変数henkaの値を条件によって、切り替えます。
デフォルトではdraw()は1秒間に60回実行されます(フレームレート60)が、それでは動きが早くて目まぐるしいので、frameRate(10)としてゆっくり変化させています。
クリックで開始⇔停止
【リストT1-3-1】 const x = 35; const y = 35; const max = 30; let d = 0; let henka = 1; function setup() { createCanvas(250, 250); noStroke(); fill(0); frameRate(10); //ゆっくり変化させるためフレームレートを10にする } function draw() { background(220); if (d>=max || d<0) { //直径がmax以上になった時、または負になった時 henka = -henka; //変化量の正負を入れ替える } d = d + henka; ellipse(x, y, d); }
右側の四角の中に示される実行例では、四角内をクリックすると動きが止まり、もう一度クリックするとスタートするように作ってあります。
塗り(透明度)を変える
リストT1-3-1では円の大きさを変更しましたが、今度は円の塗りを徐々に変えてみよう。透明度を0から255まで変化させます。大きさを変えた例と同様に、最小値0と最大値255の間を繰り返し変化させるため、変化量の正負を条件に応じて、反転させます。
クリックで開始⇔停止
【リストT1-3-2】 const x = 35; const y = 35; let d = 20; let alpha = 255; let henka = 2; function setup() { ..... // リストT1-3-1と同じ } function draw() { background(220); //透明度が255以上になった時、または負になった時 if(alpha >= 255 || alpha < 0){ henka = -henka; //変化量の正負を入れ替える } alpha = alpha + henka; fill(0, alpha); ellipse(x, y, d); }
演習問題
クリックで開始⇔停止
クリックで開始⇔停止
クリックで開始⇔停止
クリックで開始⇔停止
円の大きさが個別に違うので100個分の円の大きさを覚えておく必要があります。要素の数が100個の配列を用意し、そこに個々の円の直径を入れておきます。まず、setup()関数の前で、配列の変数を定義します。
let diameter = [];そして、setup()関数の中で、配列の100個の要素を0にします。
for (let i = 0; i < 100; i++) { diameter[i] = 0; // 0 で初期化 }