付箋・パスの投げ縄選択
細い線でパスを描く
更新頻度の高いレイヤーを分けるのが必要不可欠
離したら
選択されたアイテムのハイライト表示?
とりあえずこちらが楽そうか
当たり判定
×選択パスの各点からのhitTest
→パスの中が選ばれない
付箋は4隅、パスは各点から選択範囲パスに対してhitTest
オブジェクトの数が増えると重たくなりそう
パスとパスのブーリアン演算を使う案
これはシンプルだが、パフォーマンスの心配はある
とりあえず気にしないで実装して、遅いようならまずバウンディングボックスで絞るとかかな!
すでに内部でやってそう!
これは「与えられたArray({point: Point})の各pointでhitTestする」というだけのもの
→まずブーリアン演算で実装してみる
十分な速度で動くかどうかを検証
100付箋のintersectはiPadでも20msecで動く
intersectではなく完全に包含されている場合の当たり判定が、予定していたブーリアン演算でうまく動かない
これはおそらく、intersectはPathとShapeに対して定義されているのに
subtractはPathとPathであることを仮定した実装になっていて
内部でargがPathだと思って呼び出したメソッドが存在しなくて死んでいるのだな
対処
完全に内包されている場合、相手がShapeならShapeの重心に対する点でのhitTestで確実にPathに当たるはず
相手がPathである場合にsubtractが使えるのであれば問題ない
パスがfillされてないといけないのでcloneしてopacity: 0でfill。
付箋との間の当たり判定は問題なく動くようになった
パスとの当たり判定も動く
https://gyazo.com/e79d134ca70f1b4999bf0ce6cd03f9e9
(必要か?)選択マイナス機能