我有一个 WindowedApplication,在键盘事件(在 ENTER 键上)上有一个侦听器,但是当用户选择使用颜色选择器并键入十六进制代码然后按 ENTER 时,事件也会传播到我的 WindowedApplication。我必须停止传播。任何提示或片段?谢谢P。
2 回答
这是 TitleWindow 代码的一部分,其中 cp 是 ColorPicker。
...
公共函数 init():void { cp.addEventListener(ColorPickerEvent.ENTER,handler); }
公共函数处理程序(e:ColorPickerEvent):void { e.stopImmediatePropagation(); }
公共函数 changeColor(e:ColorPickerEvent):void { Application.application.couleur = cp.selectedColor; PopUpManager.removePopUp(this); } ...
这是来自我的主要 mxml :
...employeeList.addEventListener(KeyboardEvent.KEY_UP, enterListener); ...
私有函数 enterListener(e:KeyboardEvent):void {
if(e.keyCode == Keyboard.ENTER) {
if(employeeList.selectedItem) {
showDetail(employeeList.selectedItem as Employee);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
keyDown="appHandler(event)">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
private function appHandler(event:KeyboardEvent):void
{
trace('A key has been pressed inside the app');
}
private function cpHandler(event:KeyboardEvent):void
{
trace('A key has been pressed inside the color picker');
event.stopPropagation();
}
]]>
</fx:Script>
<mx:ColorPicker x="159" y="137" id="cp" keyDown="cpHandler(event)"/>
<s:TextInput x="233" y="137"/>
</s:WindowedApplication>