なんとびっくり。Window全体…つまり
application.addEventListener(FlexEvent.ENTER , keyHandler);
は、ダメポであることが判明。
コンパイルエラーは出てこないんだけど、取得も出来ないっぽ orz*1
addEventListenerしていいのは、とりあえず現状わかってるので mx:TextInput 。ほかはしらにゃい〜
サンプルコードおいとくわ。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="onComplete()"> <!-- *********************************** --> <mx:Script source="base.as" /> <mx:VBox id="vvv"> <!-- 実験君 --> <mx:TextInput id="a_txt" enter="onEnter()" text="ほげほげ" /> <mx:Script> import mx.controls.Alert; private function onEnter():void { trace("test 1"); Alert.show("test 1"); } </mx:Script> <!-- *********************************** --> <mx:TextInput id="ti" width="200" imeMode="JAPANESE_HIRAGANA" /> <mx:Label id="l1" /> <mx:Label id="l2" /> </mx:VBox> </mx:Application>
base.as
(色々実験してるので、余計なimportは気にすんなw)
// ActionScript file import flash.media.Sound; import flash.net.URLRequest; import flash.utils.Timer; import mx.controls.Alert; import mx.controls.Label; import mx.events.FlexEvent; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; private var external_val:String; private function onComplete():void{ trace ("onC"); Alert.show( "onC" ); ti.setFocus(); focusManager.setFocus(ti); // //application.addEventListener(KeyboardEvent.KEY_UP, keyHandler); //ti.addEventListener(KeyboardEvent.KEY_UP, keyHandler2); //application.addEventListener(KeyboardEvent.KEY_UP, keyHandler); //ti.addEventListener(mx.events.FlexEvent.ENTER , keyHandler2); //application.addEventListener(mx.events.FlexEvent.ENTER , keyHandler); //ti.addEventListener("enter" , keyHandler2); // ti.addEventListener(FlexEvent.ENTER , keyHandler2); application.addEventListener(FlexEvent.ENTER , keyHandler); } //private function keyHandler(event:KeyboardEvent):void { private function keyHandler(e:FlexEvent):void { //Alert.show( event.keyCode + "/" + event.charCode ); //trace( event.keyCode + "/" + event.charCode ); trace( "event 1"); } //private function keyHandler2(event:KeyboardEvent):void { private function keyHandler2(e:FlexEvent):void { //Alert.show( "2:" + event.keyCode + "/" + event.charCode ); //trace( "2:" + event.keyCode + "/" + event.charCode ); Alert.show(" event 2" ); trace( "event 2"); trace ( e ); }
とりあえず。部品系のコンポーネントぢゃないと取得できないんだとすると…「どのコントロールなら行けるのか」、そのうち調べ尽くさないと、かも。
*1:なんかミスってたら誰か突っ込んで〜