0

我有一个 WindowedApplication,在键盘事件(在 ENTER 键上)上有一个侦听器,但是当用户选择使用颜色选择器并键入十六进制代码然后按 ENTER 时,事件也会传播到我的 WindowedApplication。我必须停止传播。任何提示或片段?谢谢P。

4

2 回答 2

0

这是 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);
}
}
}

于 2010-02-23T12:21:50.787 回答
0
<?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>
于 2010-02-22T18:13:26.247 回答