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

本文来自: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 );

       } 

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值