「tmlib.js 怒濤の 100 サンプル!!」を試す その75

その75。

tmlib.js 怒濤の 100 サンプル!! – Graphics(HTML5 Canvas) 編

今回試すサンプルは「ピクセル操作」の「ピクセルを取得しよう」です。
ではサンプルが掲載されているのでまずは見てみましょう。
中央のボタンを押してみて下さい。
半透明の3つの円が重なりあって描画されたと思います。

/*
* 定数
*/
var SCREEN_WIDTH = 465;
var SCREEN_HEIGHT= 465;
tm.main(function() {
// canvas インスタンス生成
var canvas = tm.graphics.Canvas("#world");

// 幅, 高さを指定
canvas.resize(SCREEN_WIDTH, SCREEN_HEIGHT);
// 画面にフィットさせる
canvas.fitWindow();

// グローバルαを指定
canvas.globalAlpha = 0.5;
// 円を描画
canvas.fillStyle = "rgb(255, 0, 0)";
canvas.fillCircle(230, 150, 100);
canvas.fillStyle = "rgb(0, 255, 0)";
canvas.fillCircle(180, 250, 100);
canvas.fillStyle = "rgb(0, 0, 255)";
canvas.fillCircle(280, 250, 100);

// クリックした箇所のピクセル値を表示
var bitmap = canvas.getBitmap();
canvas.element.onclick = function(e) {
var pixel = bitmap.getPixel(e.pointX, e.pointY);
alert(pixel.toString());
}

今回勉強するのは26~30行目になりますが順を追って説明します。

16行目

描画する図形の透明度を指定しています。
「0.5」ですので半透明になります。

18~23行目

3つの円の色をそれぞれ指示し描画を行なっています。
16行目で透明度指示していますので半透明で描画されることになります。

26行目

canvasに描画されているビットマップの情報を取得し、「 bitmap 」という変数に格納しています。
ビットマップとは簡単に言うならば1ピクセル単位の図形や画像の情報を扱うものという感じですかね。
まだちょっとわかりづらい気もしますがサンプルを最後まで読むと何となくわかるかと思います。

27行目

この行はイベントと言って「○○というアクションが起きたら□□しなさい」という風に何かを実行させるもになります。
RPGゲームでイベントが発生したなんていい方すると思います。
イメージとしてはあんな感じですね。
このサンプルでは「canvasのelementがクリックされたら無名関数を実行しなさい」という風に理解します。
僕もまだ未熟なのでもっとわかりやすい説明が出来たらいいのですが、そうするとJavascriptのことから説明しないと難しいのでこの100サンプル解説では割愛させて頂きます。

28行目

27行目のイベントが発生した時のみ実行させる行です。
26行目で取得したビットマップ情報の中からクリックした場所のピクセルを取得し、「 pixel 」とう変数に格納しています。
クリックした座標の情報はどこから取得したかと言えば27行目で「 function(e) 」の「 (e) 」に格納されています。
そうすると「 bitmap.getPixel(e.pointX, e.pointY) 」という意味がわかるのではないでしょうか。

29行目

この行も27行目でイベントが発生した時のみ実行されます。
alert() 」は最前面に小さいポップアップウインドウが表示されるメソッドです。
パラメータには「 pixel.toString() 」とあります。
これは28行目で取得したピクセル情報を「 toString() 」で文字列に変換しています。
文字列に変換しなくても表示はされますが、その際は数値として扱われます。
今はこのサンプルで文字列に変換していたなぁと覚えておくだけでいいかと思います。
詳しく知りたい方は「 データ型 」で検索してみて下さい。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です