前提・実現したいこと
canvas上をクリックすることで点を記憶し、点と点の間を直線で結ぶ機能をpaper.jsで施しています。
Illustratorで言うところのペンツールのようなものです。
以下リンク動作サンプルです。
サンプル
3点以上クリックしたのちに1点目をクリックすることでパスを閉じ、次のクリックは1点目から。
という機能にしたいです。
発生している問題
3点以上クリックしたのち1点目をクリックしてもパスを閉じることができず、点を無限に増やすことができる状態です。
【例:三角形を作る場合】
■現状:4点目で1点目をクリック→次の点は5点目
■理想:4点目で1点目をクリック→パス閉じる→次の点は1点目
該当のソースコード
paperscript
1<script type="text/paperscript" canvas="canvas"> 2 var path = new Path(); 3 path.strokeColor = "red"; 4 path.strokeWidth = 2; 5 path.selected = true; 6 function onMouseDown(e) { 7 path.add(e.point); 8 } 9 </script>
試したこと
paperscript
1<script type="text/paperscript" canvas="canvas"> 2 var path = new Path(); 3 path.strokeColor = "red"; 4 path.strokeWidth = 2; 5 path.selected = true; 6 function onMouseDown(e) { 7 path.add(e.point); 8 //1点目を打つと発火 9 function isFirst() { 10 //パスを閉じる 11 path.closePath(); 12 //リセット 13 14 } 15 } 16 </script>
paper.jsの公式サイトのリファレンスに
isFirst()
最初のセグメントかどうかを判定すると思われるメソッドがありました。
isFirst()の判定の結果がtrueになればパスを閉じる、というイベントができるかもしれないと希望を持ってスクリプトを書いてみましたが、上記スクリプトは全く機能しませんでした。
また、パスを閉じる→次のクリックは1点目、を実装できそうなプロパティ等は見当たりませんでした。
補足情報
paper.jsは外部ファイルではなく、paperscriptで記述しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/27 12:38
2019/03/28 01:07