У меня есть простой производный элемент управления TextInput, который вставляет некоторый текст по Ctrl + Shft + B:
package controls
{
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import spark.components.TextInput;
public class MyTextInput extends TextInput
{
private const BAM:String = "BAM!";
public function MyTextInput()
{
super();
this.addEventListener(KeyboardEvent.KEY_DOWN, interceptKey);
}
protected function interceptKey(event:KeyboardEvent):void
{
if((event.keyCode == Keyboard.B) && event.ctrlKey && event.shiftKey)
{
// Insert some text on Ctrl+Shft+B
event.preventDefault();
this.insertText(BAM);
}
}
}
}
И у меня есть простое приложение Flex, которое использует элемент управления:
<?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"
xmlns:controls="controls.*"
width="230" height="120"
>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable]
private var text:String;
]]>
</fx:Script>
<controls:MyTextInput left="10" right="10" top="10" text="@{text}"/>
<s:Label left="10" right="10" bottom="10" text="{text}"/>
</s:WindowedApplication>
Поле метки обновляется для отдельных нажатий клавиш, но при вызове Ctrl + Shft + B ожидаемый текст появляется в производном элементе управления TextInput, но не в метке.