Open1
作図ソフトの設計あれこれ
HTMLCanvasElement
ではなく概念としての)に対するイベントハンドラ
SVGベースの作図canvas(アンカー要素それぞれにイベントハンドラハンドラをセット
- アンカー要素の
down
イベントが発生するのでその操作が始まったことを検知しやすい - アンカー要素がたくさんあるとイベントの経路が煩雑になってくる
- 検知は楽なものの、その後は結局canvas側の
move
イベントなどで分岐を書くことになる - 単に
click
されたかどうかをチェックしたいだけなら楽な方法- しかしdragなど
click
以上の何かをしようとするとその後の不便が目立つ
- しかしdragなど
data-anchor-type
的なカスタム値をセット
アンカー要素には- canvasの
down
イベントにてそのカスタム値をチェックしてなにがdown
されたか判定する - イベントハンドラをcanvasに集約できる
- 何が
down
されたかの判定はブラウザに任せつつ、処理をcanvas側にまとめられる
- 何が
-
closest
を使ってdown
された要素がどのアンカーに属するかを辿る必要があるのでパフォーマンスはやや劣化する可能性あり