制御関数
初期設定
setup
setup関数は初期設定を行う関数で、一度だけ実行されます。
主にキャンバスの生成や変数の初期化を行います。
次のsampleでは、キャンバスの生成とスライダー、変数の初期化を行っています。
sample
var slider;
var ballInit;
function setup(){
createCanvas(200, 200);
slider = createSlider(0, 100, 50);
slider.position(10, 220);
ballInit = [random(width, height)];
}
preload
preload関数は、setup関数より先に一度だけ実行され、外部データのロードを行うために使います。
loadJSON, loadImageなどのロード系関数はpreload内に記述します。
sample
var slider;
var ballInit;
var imgURL = "assets/sample.jpg"
var img;
function preload(){
img = loadImage(imgURL);
}
function setup(){
createCanvas(200, 200);
}
アニメーション
draw
draw関数は、setup実行後1秒間に60回のレートで繰り返し実行されます。
実行毎に変化するようにプログラムを書けばアニメーションとなります。
1秒間に実行する回数はframeRate関数で変更することができます。
sample
function setup(){
createCanvas(100,100);
}
function draw(){
background(255);
text(str(frameCount), 30, 50);
if(frameCount > 1000){
noLoop();
}
}
noLoop
noLoop関数はdraw関数の繰り返し実行を止める関数です。
setup関数またはdraw関数に書くと、一度だけdraw関数が実行されます。
サンプルはdraw関数のsampleを参照してください。
loop
noLoopで止めたアニメーションを再開することができます。
sample
function setup() {
createCanvas(100, 100);
background(200);
noLoop();
}
function draw() {
background(200);
text(str(frameCount), 50, 80);
}
// マウスの左ボタンが押されてるとき実行
function mousePressed() {
loop();
}
//マウスの左ボタン押されなくなったとき実行
function mouseReleased() {
noLoop();
}
redraw
noLoopでアニメーションが止まっているとき、redrawを実行すると、一度だけdraw関数が実行されます。
sample
function setup() {
createCanvas(100, 100);
noLoop();
}
function draw() {
background(200);
text(str(frameCount), 50, 80);
}
function mousePressed() {
redraw();
}
設定保存関数
push, pop
push関数は現在の色やモード設定などの設定情報を保存し、pop関数は保存しておいた設定情報を復元します。
push以降で変更された設定情報は一時的なものとなり、popで変更はなかったことになります。
translateやrotateで図形を移動回転させるときに使うと、移動回転させる対象を限定することができます。
push,popを使わないsample
function setup() {
createCanvas(100, 100);
background(255);
noLoop();
}
function draw() {
fill(0);
rect(10,10,50,50,);
fill(200);
ellipse(70,50,60);
triangle(50,50, 100,100,20,100);
}
push,popを使うsample
function setup() {
createCanvas(100, 100);
background(255);
noLoop();
}
function draw() {
fill(0);
rect(10,10,50,50,);
push();
fill(200);
ellipse(70,50,60);
pop();
triangle(50,50, 100,100,20,100);
}
push,popを使ったので、fill(200)は一時的な変更となった