###概要
Monacaで「D3.js」プラグインを使用したいのですが、1行目でエラーが出ます。
初心者で色々調べたのですが全く分からなかった為こちらに質問致しました。何卒よろしくお願いします。
エラーメッセージ
Uncaught TypeError:Cannot call method 'zoom' of undefined
###該当のソースコード
<script> var zoom = d3.behavior.zoom() ; ←ここでエラーが出ます。 </script>###ソース全文
HTML
1<!DOCTYPE HTML> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 6 <meta http-equiv="Content-Security-Policy" content="default-src * data:; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 7 <script src="components/loader.js"></script> 8 <link rel="stylesheet" href="components/loader.css"> 9 <link rel="stylesheet" href="css/style.css"> 10 11 12 13 14</head> 15<body> 16 <div id="parent"> 17 <img src="img/test.png" id="target"> 18</div> 19 20<p class="coordinate">scale: <mark id="scale">?</mark></p> 21<p class="coordinate">translate: [ <mark class="translate">?</mark>, <mark class="translate">?</mark> ]</p> 22 23<p><a id="method1">設定</a></p> 24<p><a id="method2">解除</a></p>
JavaScript
1<script> 2 // ズーム操作のコンストラクタを作成 3var zoom = d3.behavior.zoom() ; 4//var zoom = d3.zoom() ; 5 6// ズーム操作に対応するイベントリスナーを指定する 7zoom.on( "zoom", function() { 8 // イベントオブジェクト 9 var event = d3.event ; 10 11 // スケール (現在の倍率) 12 var scale = event.scale ; 13 14 // トランスレート (X方向、Y方向への移動距離) 15 var tx = event.translate[0] ; 16 var ty = event.translate[1] ; 17 18 // 出力 19 d3.select( "#scale" ).text( scale ) ; 20 d3.selectAll( ".translate" ).data( event.translate ).text( function( d, i ) { return d ; } ) ; 21} ) ; 22 23// クリックイベント 24d3.select( "#method1" ).on( "click", function() { 25 // div要素に対して、call()メソッドでズーム操作を適用 26 d3.select( "#parent" ).call( zoom ) ; 27} ) ; 28 29// クリックイベント 30d3.select( "#method2" ).on( "click", function() { 31 // div要素に指定したズーム操作のイベントを削除 32 d3.select( "#parent" ).on( ".zoom", null ) ; 33} ) ; 34</body> 35</html> 36 </script>
###補足
・「D3.js」、「jQueri」のプラグインはMonaca内の「CSS/JSコンポーネントの追加と削除」から表示されたものを全てダウンロードしています。
申し訳ありませんがどなたかご教授の頂けないでしょうか。よろしくお願い致します。
###追記
後日自分が必要になった箇所を記載致します。
(旧)d3.behavior.zoom() ⇒ (新)d3.zoom()
// スケール (現在の倍率)
(旧)event.scale ⇒ (新)event.transform.k
// トランスレート (X方向への移動距離)
(旧)event.translate[0] ⇒ (新)event.transform.x
// トランスレート (Y方向への移動距離)
(旧)event.translate[1] ⇒ (新)event.transform.y
回答1件
あなたの回答
tips
プレビュー