Canvas を使用して他のいくつかのコンポーネントを含む Flex アプリケーションがあります。そのキャンバスには、システムを介して特定のフローを呼び出すために使用されるボタンがあります。キャンバスの他の場所をクリックすると、詳細ペインが表示され、このコントロールによって表されるレコードに関する詳細情報が表示されます。
私が抱えている問題は、ユーザーがボタンをクリックするたびにボタンがキャンバス内にあるため、ボタンとキャンバスの両方でクリックイベントが発生することです。ユーザーが別のコンポーネントで覆われた領域をクリックした場合に、Canvas オブジェクトでクリック イベントが発生しないようにする方法はありますか?
問題を実証するために、簡単な小さなテスト アプリケーションを作成しました。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function onCanvasClick(event:Event):void {
text.text = text.text + "\n" + "Canvas Clicked";
}
private function onButtonClick(event:Event):void {
text.text = text.text + "\n" + "Button Clicked";
}
]]>
</mx:Script>
<mx:Canvas x="97" y="91" width="200" height="200" backgroundColor="red" click="onCanvasClick(event)">
<mx:Button x="67" y="88" label="Button" click="onButtonClick(event)"/>
</mx:Canvas>
<mx:Text id="text" x="97" y="330" text="Text" width="200" height="129"/>
</mx:Application>
ボタンをクリックすると、マウスが 1 回だけクリックされたにもかかわらず、テキスト ボックスに "Button Clicked" と "Canvas Clicked" の 2 つのエントリが表示されます。
ボタンをクリックすると「ボタンクリック」エントリのみが作成されるように、2番目のエントリが作成されないようにする方法を見つけたいと思いますが、キャンバスの他の場所をクリックすると「キャンバスクリック」エントリは引き続き表示されます。