Canvasは、FlashやDOMツリーとは異なり、並べ替え順序やzインデックスがあります。これはフラットなラスターイメージに少し似ており、描画したものの順序とスタック順序を記憶するには、JavaScriptの他のロジックに依存する必要があります。
この種の双方向性が必要な場合は、サードパーティのライブラリを使用するのが常に最善であることがわかりました(実際には、あまり機能しない1つまたは2つのサークルの場合を除きます)。
インタラクティブな「シェイプ」ベースのJavaScriptグラフィックスの場合、実際にはキャンバスツールよりもSVGツールであるRaphael.jsまたはD3を使用するので、おそらくそれはあなたには向いていませんが、シンプルでクロスブラウザーです。
また、processing.js(Processing the Java libのjsポート)もあります。これは、フラッシュのように感じられ、すべてのレベルとオブジェクトを追跡できます。他にもたくさんありますが、それは別のトピックです。
非常に単純な場合、オプションは次のようになります。
- オブジェクトまたは配列内のキャンバス上で合成されたすべての形状/要素の座標を保持します。これは、z-index / sortシーケンスも追跡し、それによって何が上にあるかを知らせます。
- クリックのマウス座標でimagedataを使用して、クリックされたものを確認します
- 互いに合成された複数のキャンバスを使用し、クリックイベントの作業をDOMに任せます