Flex组件101 –在UI组件里启动屏幕键盘支持

来源:互联网 发布:南昌教师网络教研平台 编辑:程序博客网 时间:2024/05/19 00:11

本文来自:http://www.insideria.com/2009/08/flex-components-101---enabling-keyboard-support-in-uicomponent.html

 

创建过扩展UI组件的自定义组件,那你毫无疑问可以进入这样一个场景。即使你为屏幕键盘事件添加了事件监听,或你覆盖了keyDownHandler 函数,你可能会发现你的组件实例未处理屏幕键盘事件。设定focusEnabled, mouseFocusEnabled, 或tabEnabled 似乎也不会产生此效果。不要抓狂!这很容易。你可能已经注意到如果你扩展一个Canvas或一个Button, 或其它任何Flex 组件(Spark或Halo), 你可轻松接收屏幕键盘事件,而毫无问题。然而,如果你创建自定义组件,而你想一个完全空白的对象(尽可能的bare-bone),你想扩展UI组件。UI组件是所有可视化Flex组件的根本,包括所有的Halo 和 Spark 组件组。

在UI组件里启动屏幕键盘支持就像执行"IFocusManagerComponent"界面一样容易。所有使用于"IFocusManagerComponent"界面的方法都在UI组件基本类里定义清楚,你所要做的就是向你的类声明添加"extends IFocusManagerComponent"。

下面是个简单的范例。它是一个自定义组件,接收屏幕键盘输入,在屏幕上予以显示。

这里是让组件运行起来的代码:

package

{

   import flash.events.KeyboardEvent;

   import mx.controls.Text;

   import mx.core.UIComponent;

   import mx.managers.IFocusManagerComponent;

   

   public class UIComponentWithKeyboard 

     extends UIComponent 

     implements IFocusManagerComponent

   {

      private var txt : Text;

      

      override protected function createChildren() : void

      {

         super.createChildren();

         txt = new Text();

         txt.visible = true;

         txt.setStyle("color", 0);

         txt.text = "click here, and press any key to accept keyboard events";

         addChild( txt );

       }

      

      override protected function updateDisplayList(w:Number, h:Number) : void

      {

         super.updateDisplayList(w,h);

         txt.width = w;

         txt.height = h;

         with (this.graphics)

         {

            clear();

            beginFill(0xFF0000, .1);

            drawRect(0,0,w,h);

          }

       }

      

      override protected function keyDownHandler(event:KeyboardEvent) : void

      {

         txt.text = "keycode:" + event.keyCode + 

                ", location:" + event.keyLocation + 

                ", charcode:" + event.charCode + 

                ", value:" + String.fromCharCode( event.charCode );

       } 

    }

}

原创粉丝点击