これは私が抱えているかなり一般的な問題だと思います。大きな形の上に小さな形が1つあります。大きな形に入るとmouseenter
/として登録されmouseover
ます。しかし、私が小さな形に入ると、大きな形は mouseleave
/を登録しmouseout
ます。これは、LAXのトイレに行って、空港の職員がターミナルを出たために再びセキュリティを通過するように要求した場合のようになります。
これは、問題を説明する最小限のJSFiddleの例です。
これは私が抱えているかなり一般的な問題だと思います。大きな形の上に小さな形が1つあります。大きな形に入るとmouseenter
/として登録されmouseover
ます。しかし、私が小さな形に入ると、大きな形は mouseleave
/を登録しmouseout
ます。これは、LAXのトイレに行って、空港の職員がターミナルを出たために再びセキュリティを通過するように要求した場合のようになります。
これは、問題を説明する最小限のJSFiddleの例です。
これは意図されたものです。あなたはもはや円の上にいるのではなく、三角形の上にいます。これらは層であるため、あなたの定義では、カーペットの上に立っているときに床板に触れています.
トライアングルでイベントを無視する場合は、http: //jsfiddle.net/YcBNL/19/に示すように、triangle.setListening(false) を呼び出すことができます。このようにして、イベントは下の形状に渡されます。
もう 1 つの方法は、Kinetic.Group を使用して円と三角形をグループ化し、円の代わりにイベント リスナーをグループに追加することです。
上記のマイケルの提案は有望に思えましたが、それは 1 つの形状 (この場合は三角形) をハンディキャップするか、すべての機能をグループに移動するだけであり、これも私が望んでいるものではありません。
一時的に私が行ったことは、三角形に mouseenter 信号を使用し、円に mouseleave 信号を使用することです。これはうまくいくようです。ただし、これが2つ以上の重なり合う形状で機能するとは思えません。誰かがより良い解決策を思いついたら、私はすべて耳にします =)