STERFIELD

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

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

前回、HTML5のCanvasにおいて、矩形でレスポシンシブに対応したリンクをつける方法をご紹介いたしましたが(→前回の記事)、
今回は、円弧でレスポンシブに対応したリンクをつける方法をご紹介いたします。

↓こちらがDEMOです。

DEMO

 

方法

 1.Canvasの準備をする。

こちらは前回の方法と同じで、HTMLとCSSで、

960px以下でCanvasの大きさが画面サイズに合わせて変化するようにします。

 

 

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

矩形のときはwidthとheightを設定しましたが、今回は円弧ですので、代わりにradius(半径)を設定します。

 

 3.円弧を描画する

2で設定した値をもとに、円弧を描画します。

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

.beginPath() でパスの描画を開始,

.fillStyle で塗りつぶす色を設定(設定方法はCSSと同じです)

.arc([左からの位置], [上からの位置], [円弧の半径], [円弧の開始角], [円弧の終了角], [円弧の描画方向(falseだと時計回り、trueだと反時計回り)]) で円の描画設定

.fill() で塗りつぶしの描画

を行います。

 

4. リンクの設定と実行

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

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

4の円弧とクリックした場所の一致は、

円弧の中心の位置を(cx, cy)、円弧の半径をcr、クリックした位置を(mx, my)、縮小率をsとした場合、

if((cx *s – mx)*(cx *s – mx) + (cy *s – my)*(cy *s – my) <= (cr *s )*(cr *s)){

円弧とクリックした位置がエッチする場合に実行するコード

}

で判定できます。

↓当たり判定の参考サイト

当たり判定

 

正確に円に沿ったリンクを貼ることができるのがいいと思いました。

 

その他参考サイト

さまざまな図形を描く

 

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

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

↓多角形編はこちら

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

Author Profile

著者近影

NINOMIYA

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

SHARE

合わせて読みたい