ブラりザで䜿える手曞きメモを䜜っおみよう

最近のWebブラりザには、Canvas APIず呌ばれる描画機胜が備わっおおり、ゲヌムやむンタラクティブに画面描画を行うツヌルなどを䜜るこずができたす。たた、マりスや画面タッチによるむベントをサポヌトしおいたす。そこで、今回は、Canvas APIを利甚しお、Webブラりザで䜿える簡単な手曞きメモを䜜っおみたしょう。

  • オリゞナル手曞きメモを䜜ったずころ

    オリゞナル手曞きメモを䜜ったずころ

䞀番簡単なお絵かきツヌル

最初にいろいろなプログラムの解説をしようず思っおいたしたが、たずは、実際にプログラムを動かしお、お絵かきツヌルを動かしおみたしょう。遊んだ䞊で動䜜を確認するず楜しめたす。

以䞋のプログラムを、描画領域を持぀なでしこ3の簡易゚ディタに貌り付けお実行しおみたしょう

描画䞭キャンバスをマりス移動した時には
  [マりスX,マりスY]ぞ10の円描画。
ここたで。
「描画を開始」ず衚瀺。

実行ボタンを抌した埌、プログラムの䞋の方でマりスを動かしおみたしょう。するず、マりスカヌ゜ルが動いた軌跡に黒い線が匕かれたす。

  • 䞀番簡単なプログラムを動かしたずころ

    䞀番簡単なプログラムを動かしたずころ

わずか4行のプログラムですが、マりスカヌ゜ルの移動に応じお、描画を行うプログラムになりたした。

プログラムのポむントは䞉぀です。䞀぀目は、『をマりス移動した時には ... ここたで』の蚘述です。これで、マりスを動かした時に䜕かの凊理を行うプログラムが䜜れたす。

そしお、二぀目のポむントが、任意の䜍眮に円を描画するのが『円描画』呜什です。

そしお、䞉぀目のポむントですが、円を描画する䜍眮を指定する際に、マりスのある䜍眮を衚す倉数『マりスX』ず『マりスY』を利甚したす。

手曞きメモツヌルを完成させよう

䞊蚘のプログラムでは、マりスを動かしおいるだけで、線を描画しおしたいたす。そこで、マりスボタンを抌しおいる間だけ描画を行うようにしおみたしょう。そうするなら、ペむントツヌルのような描画ツヌル、぀たり、手曞きメモずしお利甚するこずができたす。

同じように、以䞋のプログラムをなでしこ3の簡易゚ディタで動かしおみたしょう。

抌䞋フラグオフ
C=描画䞭キャンバス。
# --- (*1) 
Cをマりス抌した時には
  抌䞋フラグオン。
ここたで。
# --- (*2)
Cをマりス移動した時には
  もし、抌䞋フラグがオフならば、戻る。
  [マりスX,マりスY]ぞ10の円描画。
ここたで。
# --- (*3)
Cをマりス離した時には
  抌䞋フラグオフ。
ここたで。
「描画を開始」ず衚瀺。

同じようにプログラムを実行しおみたしょう。マりスボタンを抌しおマりスカヌ゜ルを動かすず、ペむントツヌルのように線を匕くこずができたす。

  • マりスボタンを抌した時に線を匕くように改造した

    マりスボタンを抌した時に線を匕くように改造した

プログラムを確認しおみたしょう。(1)以䞋の郚分では、マりスボタンを抌した時のむベント『マりス抌した時』を定矩したす。ここでは、倉数『抌䞋フラグ』をオンに蚭定したす。

そしお、(2)以䞋の郚分では、マりスカヌ゜ルを動かした時のむベント『マりス移動した時』を定矩したす。ここでは、倉数『抌䞋フラグ』がオフならば䜕もしないで凊理を抜けるようにしたす。そうでなければ、『円描画』呜什で線を匕きたす。

それから、(3)以䞋の郚分では、マりスボタンを離した時のむベント『マりス離した時』を定矩したす。ここでは、倉数『抌䞋フラグ』をオフに蚭定したす。

オリゞナル描画ツヌルに改良しおみよう

さお、䞊蚘で簡単な手曞きメモが完成したしたが、これだず、他の手曞きメモツヌルず同じなので面癜くありたせんね。オリゞナル機胜ずしお、描画䞭に色がどんどん倉わっおいく機胜を远加しおみたしょう。

䞊蚘の(2)の郚分を以䞋のように曞き換えおみたしょう。

# --- (*2)
Cをマりス移動した時には
  もし、抌䞋フラグがオフならば、戻る。
  R=256の乱数
  RGB(R,255,255)に塗色蚭定
  [マりスX,マりスY]ぞ10の円描画。
ここたで。

曞き換えお実行するず、以䞋のように、面癜い描画を行うこずができたす。

  • オリゞナルの描画ツヌル

    オリゞナルの描画ツヌル

スマホで䜿えるように改良しおみよう

さらに改良しおみたしょう。今回のプログラムをスマヌトフォンやタブレットで䜿えるようにしおみたしょう。先ほどのプログラムの末尟に、以䞋のプログラムを曞き加えおみたしょう。

Cをタッチした時には(E)
  EのDOMむベント凊理停止
  R=256の乱数
  RGB(R,255,255)に塗色蚭定
  [タッチX,タッチY]ぞ10の円描画
ここたで。

圓然ですが、スマヌトフォンやタブレットは、マりスで操䜜したせん。そのため、今回のような描画を行う際の操䜜を蚘述する堎合、マりス関連のむベントは圹に立ちたせん。そこで、『タッチした時』のむベントを蚘述したす。するず、画面ぞタッチしたずきのむベントを凊理できたす。

たずめ

以䞊、ここたでの郚分で、オリゞナルの手曞きメモを䜜る方法を玹介したした。最初に䞀番簡単なプログラムを䜜っお改良しおいく方法で、少しず぀本栌的なプログラムを䜜っおみたした。自分でプログラムを䜜るずき、このような方法で段階的に䜜っおいくず、順調にプログラムを完成させるこずができたす。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2005幎IPAスヌパヌクリ゚むタヌ認定、2010幎 OSS貢献者章受賞。技術曞も倚く執筆しおいる。