いろいろな形をいろいろな色で描こう:Processing.js編
では、Canvas要素の時に描画したように、Processing.jsを使って線や円、自由曲線などを描いてみましょう(HTMLはJavaScriptの読み込み先をprocessing_3.jsに変更しただけなので割愛します)。
//jQuery によるドキュメントの読み込みと Processing を new するところは同様なので中略
var Main = {
init: function(processing) {
//Processing のキャンバスサイズを 400x400 にする
processing.size(400, 400);
//線を描く xy(200, 50)とxy(200, 350)に、幅5の黒色の線を引く
processing.strokeWeight(5);
processing.stroke(0, 0, 0);
processing.line(200, 50, 200, 350);
//三角を描く 縁の幅が4で黒色、塗りつぶしが白色の三角形を描く
//triangle を使うこともできるが、ここでは多角形の書き方の基本として以下のように描く
processing.strokeWeight(4);
processing.fill(255, 255, 255);
processing.beginShape();
processing.vertex(200, 50);
processing.vertex(150, 150);
processing.vertex(250, 150);
processing.vertex(200, 50);
processing.endShape();
//円を描く
processing.fill(0, 0, 255, 255*0.8);
processing.ellipse(200, 200, 100, 100);
//塗りつぶしの色を赤にする
processing.fill(255, 0, 0);
//矩形
processing.rect(150, 250, 100, 50);
}
}
このようにCanvasでの描画より、ややシンプルに描くことが可能です。色や透明度、ストロークなどの指定は、Canvasでは属性の変更だったのに対し、Processingではメソッドを介して変更する点が違います。また、先ほど説明したように、形を書き出すとfill、strokeで指定した情報で塗りつぶしとストロークが書き出され、透明度の指定もCanvasでは0 - 1.0、Processingでは0 - 255となっています。
文字を描こう:Processing.js編
Canvas要素の時と同じように、もちろん文字も描けます(HTMLはJavaScriptの読み込み先をprocessing_4.jsに変更しただけなので割愛します)。
//jQuery によるドキュメントの読み込みと Processing を new するところは同様なので中略
var Main = {
init: function(processing) {
//中略
//フォントを "20pt Arial"にし、白で塗りつぶしで文字列を描く
//縁取りはまだできないので、外部ライブラリと組み合わせるなどが必要
var font = processing.createFont("Arial", 32);
processing.textFont(font);
processing.fill(255, 255, 255);
processing.text("HELLO CANVAS", 72, 100);
}
}
文字列の描画もできますが、CanvasにおけるstrokeTextに該当するメソッドがまだ用意されていないようです。Processing.jsでは、例えば、Glyphを実現するGlyph Methodなどを利用すれば良いかもしれません。
イメージを描こう:Processing.js編
早速描いてみましょう(HTMLはJavaScriptの読み込み先をprocessing_5.jsに変更しただけなので割愛します)。
//jQuery によるドキュメントの読み込みと Processing を new するところは同様なので中略
var Main = {
init: function(processing) {
//中略
//イメージの描画
var image = processing.loadImage("dino", "png", function () {
//イメージのロードイベントを取って描画する
processing.image(image, 200, 200);
});
}
}
loadImage()した直後にimage()をしても、イメージがまだ読み込まれていない可能性があるため、読み込み完了を受けてから描画するようにしています。この場合、loadImage()の3つ目の引数が読み込み完了を受けるコールバック関数となっており、その中で描画するようにしています。
