大きさや色が変化する
描いた図形の大きさあるいは色を画面上で変化させてみます。 少しずつ変化させながら、描画を繰り返すことで、アニメーションのように図形が動きます。大きさを変える
リスト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 で初期化
}