我有一个 Flex 应用程序,我在其中使用 Canvas 来包含其他几个组件。在那幅画布上有一个按钮,用于调用通过系统的特定流程。单击 Canvas 上的任何其他位置应会导致出现详细信息窗格,其中显示有关此控件表示的记录的更多信息。
我遇到的问题是,因为每当用户单击按钮时按钮都位于画布内,所以在按钮和画布上都会触发单击事件。如果用户单击另一个组件覆盖的区域,是否有任何方法可以避免在 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>
就目前而言,当您单击按钮时,您将在文本框中看到两个条目,“Button Clicked”,然后是“Canvas Clicked”,即使鼠标只单击了一次。
我想找到一种方法可以避免进行第二个条目,这样当我单击按钮时,只会创建“单击按钮”条目,但是如果我要单击画布中的其他任何位置,则会出现“单击画布”条目仍然会出现。