とりあえず、やってみる。

よくわからんけど、やってみる。とりあえず、やってみる。

Canvas初心者がおえかきボード作ってみた!

おはようございます😊まおです!
ちょっと遅くなりましたが、今週もなんとか趣味開発できました!!


今回は、前回同様Canvas APIを使用して、【おえかきボード】を作ってみました🎈
早く画面とソースはこちらです💁‍♀️


おえかきボード


■全画面はこちら

https://tonamao.github.io/OekakiBorad/ f:id:tonamao:20190303174838p:plain



■コードはこちら

See the Pen OekakiBoard by tonamao (@tonamao) on CodePen.



■参考にさせていただいたのはこちら

q-az.net


↑↑↑ロジックの大枠など参考にさせていただきました!

www.yoheim.net


↑↑↑スマホに対応させるために参考にさせていただきました!

イベントリスナーの種類


今回のCanvas APIとしては、前回開発して理解した内容の応用でなんとかなりました!
が、今回つまったのは、イベントリスナーの種類でした。

今回使用したのは、こちらです。

■イベント

mousedown・・・・・・マウスのボタンが押されたとき
mousemove・・・・・・マウスカーソルがターゲット内を動いているとき
mouseup ・・・・・・・マウスのボタンが離されたとき
mouseout・・・・・・・マウスカーソルがターゲット外にいったとき


今回は、canvas内をドラッグしている間絵を描く仕様となるので、
mousedownで描画開始、mouseupで描画終了となるように実装しました。

また、canvas外にカーソルが動いた場合、描画終了となります。



続いてこれらの原理をもとに、マウスを使用しないスマホ対応も行いました!
スマホはマウスイベントでは動いてくれないので、専用のイベントを使用します。
実装時はこれを知らず、ここまででぬか喜びしておりました🙄


スマホ用に使用したイベントはこちらです。

スマホ対応用イベント

touchstart・・・・・・タップ開始
touchmove ・・・・・ターゲット内を動かしているとき
touchend・・・・・・タップ終了



これでスマホ対応できた....と思いきや..!?....でしたね..



Safariで画面がびよ~~~ん


決してふざけているわけではありません。はい。...😅

Safariの仕様として、画面をスライドした際に、
画面外が表示され、画面がびよ~んって感じになりますよね?

これに対応しなければ、おえかきボードが動いてしまって
おえかきどころではありません。


参考サイトの情報をもとにこちらを使って対処しました。

event.preventDefault();



これを入れることで、Safariのデフォルトの動きを制御できます。

今回私は、canvasタグ内でおえかきをする場合のみ
制御するように処理を入れました。






今回はなかなか実装する時間がなくて、大変でした。。。
しかもスマホ対応のために別途処理が必要とは....

まだまだですね...!
引き続きいろいろ、勉強していきたいと思います!


来週こそはゲームらしいものを作ってみたい...💪