STERFIELD

HTML5のCanvasでレスポンシブなリンク – 多角形編

HTML5のCanvasでレスポンシブなリンク – 多角形編

前々回の矩形(四角)編、前回の円弧編に引き続いて、

今回は多角形について、HTML5のCanvasでレスポンシブに対応したリンクをつける方法をご紹介いたします。

 

↓こちらがDEMOです

DEMO

 

方法

1.Canvasの準備をする。

こちらは前回までと同じ方法です。

 

 

 

2.描画、リンクさせる要素の設定をする

今回は多角形ですので、X座標(横方向の位置)とY座標(縦方向の位置)を不特定の個数、配列で設定します。

 

3.多角形を描画する

2で設定した値をもとに、多角形を描画します。

前回までと同様に、FOR IN文を使って、設定した1階層目のプロパティの数繰り返すようにします。

.begenPath() で多角形の描画を開始

.moveTo([始点のX座標], [始点のY座標])で多角形の開始点を設定。

パスはFOR IN文を使って、設定した多角形のパスの数から開始点を除いた分だけ繰り返します(開始点は設定済みのため)。

それぞれのパスは .lineTo([多角形のパスのX座標], [多角形のパスのY座標]) で設定。

.closePath() で多角形のパスを閉じ、

前回までと同様に、.fillStyleで塗りつぶしの色を設定して、

.fill()で多角形を塗りつぶします。

 

4.リンクの設定と実行

リンクの設定手順は次の通りです。

  1. Canvasの元の大きさ(htmlのwidth属性で設定した値)を取得しておく
  2. Canvas上でクリックしたときに、クリック時の実際のCanvasサイズを取得し、元の大きさからの縮小率を計算
  3. Canvas上のマウスの位置を取得し、縮小率を反映したものを判定の値に設定
  4. 始めに設定した円弧の位置とクリックした位置が一致する場合、設定したリンクに移動

4の多角形とクリックした位置の判定はこれまでの矩形や円弧と異なって、やや複雑となるため、

↓こちらのサイトで紹介いただいていた関数をJavaScriptに置き換えたものを利用して行いました。

点の多角形に対する内外判定

 

こちらの多角形のリンクを利用すれば、ある程度複雑な形状のリンクにも対応することができます。

 

↓矩形(四角)編はこちら

HTML5のCanvasでレスポンシブなリンク – 矩形(四角)編

↓円弧編はこちら

HTML5のCanvasでレスポンシブなリンク – 円弧編

 

Author Profile

著者近影

NINOMIYA

Webデザイナー兼コーダー出身のフロントエンド開発者です。 UXデザインやチーム開発の効率化など、勉強中です。

SHARE

合わせて読みたい