Flex: stopPropagation события Keyboard.ENTER средства выбора цвета - PullRequest
0 голосов
/ 22 февраля 2010

У меня есть WindowedApplication с прослушивателем на keyboardEvent (на клавише ENTER), но когда пользователь выбирает использование палитры цветов и вводит шестнадцатеричный код, а затем нажимает ENTER, событие распространяется и на мое WindowedApplication. Я должен остановить распространение. Любой намек или фрагмент? Спасибо П.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2010

Это часть кода TitleWindow, где cp - это ColorPicker.

...     

открытая функция init (): void {cp.addEventListener (ColorPickerEvent.ENTER, обработчик); }

обработчик открытых функций (e: ColorPickerEvent): void { e.stopImmediatePropagation (); }

открытая функция changeColor (e: ColorPickerEvent): void { Application.application.couleur = cp.selectedColor; PopUpManager.removePopUp (это); } ...

А это из моего основного mxml:

... employeeList.addEventListener (KeyboardEvent.KEY_UP, enterListener); ...

закрытая функция enterListener (e: KeyboardEvent): void {
if (e.keyCode == Keyboard.ENTER) {
if (employeeList.selectedItem) {
showDetail (employeeList.selectedItem as Employee);
}
}
}

0 голосов
/ 22 февраля 2010
<?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>
...