我尝试捕获一个事件但我不能。 请看这里: http://www.pata.ro/FlexTest/ 蓝色矩形是父项,另外两个是子项。 如果我翻过一个孩子(红色或绿色),我仍然是蓝色的(RollOut不会被蓝色的那个开除)。我把绿色矩形做得有点透明,所以你可以看到它是红色的。 当我将光标放在绿色光盘上方的地方时,我会得到BlueRollOver,GreenRollOver,RedRollOut。 我尝试做的是获得红色的RollOver,即使它是绿色的。就像父母捕获RollOver一样,即使我超过了其中一个孩子。或相反亦然。 那么,我怎样才能将事件传播到我鼠标悬停的元素下呢?
由于
Bellow你有我的代码。 事件侦听器在MXML中声明,因此我重写了红色矩形,因此我可以添加useCapture参数。如果我将useCapture设置为TRUE,红色矩形不会捕获任何事件,只要我有鼠标。如果我把它设置为假,它就像以前一样工作。那么,我该如何使用这个论点?
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
applicationComplete="init()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
private function init():void
{
gRed.addEventListener(MouseEvent.ROLL_OVER,RedRollOver,true);
gRed.addEventListener(MouseEvent.ROLL_OUT,RedRollOut,true);
}
private function BlueRollOver(ev:Event):void
{
idBlue.text="RollOver";
}
private function BlueRollOut(ev:Event):void
{
idBlue.text="RollOut";
}
private function RedRollOver(ev:Event):void
{
idRed.text="RollOver";
}
private function RedRollOut(ev:Event):void
{
idRed.text="RollOut";
}
private function GreenRollOver(ev:Event):void
{
idGreen.text="RollOver";
}
private function GreenRollOut(ev:Event):void
{
idGreen.text="RollOut";
}
]]>
</fx:Script>
<s:Group id="gBlue" x="114" y="94" width="404" height="301" rollOver="BlueRollOver(event)" rollOut="BlueRollOut(event)">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="#0000CC"/>
</s:fill>
</s:Rect>
<s:Group id="gRed" x="140" y="101" width="230" height="114">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="#EE0000"/>
</s:fill>
</s:Rect>
</s:Group>
<s:Group id="gGreen" x="39" y="20" width="200" height="200" rollOver="GreenRollOver(event)" rollOut="GreenRollOut(event)">
<s:Rect width="100%" height="100%" alpha="0.6">
<s:fill>
<s:SolidColor color="#00EE00"/>
</s:fill>
</s:Rect>
</s:Group>
</s:Group>
<s:Label x="535" y="94" text="Blue" color="#0000CC" width="149" id="idBlue"/>
<s:Label x="535" y="114" text="Red" color="#EE0000" width="173" id="idRed"/>
<s:Label x="535" y="137" text="Green" color="#00EE00" width="173" id="idGreen"/>
</s:Application>
答案 0 :(得分:0)
将事件侦听器添加到红色图层时,尝试将useCapture
参数设置为true。
答案 1 :(得分:0)
这是因为绿色和红色矩形是兄弟姐妹,如果有父/子层次结构,事件只会冒泡。在红色矩形上使用useCapture标志。