flex设置焦点

来源:互联网 发布:263云通信企业版mac 编辑:程序博客网 时间:2024/05/22 08:24

flex组件设置焦点的方法:

setFocus()

当有焦点时画框的方法:

focusRect = true;

改变画框的方法:

重载drawFocus()方法?

 

 

以下转自http://uh.9ria.com/space.php?uid=27232&do=blog&id=3897

 

首先,UIComponent会自动为stage创建一个FocusManager,但是,问题是UIComponent并 没有使用try...catch...final,也就是说CS3版组件只运行在单一的swf中,如果你要载入一个使用了组件的swf,要确保已经允许载 入的swf访问stage,否则会产生错误,使所有组件都无法运行.
对于焦点管理的细节,我们无需了解,只要知道FocusManager根据组件实现的接口来决定焦点管理的方式.
IFocusManagerComponent:表明这是一个可以接受FocusManager焦点管理的类.
           //指示是否可以从FocusManager获取焦点
           function get focusEnabled():Boolean;
           function set focusEnabled(value:Boolean):void;
           //指示是否可以通过鼠标点击获取焦点
           function get mouseFocusEnabled():Boolean;
           //指示是否可以通过键盘获取焦点
           function get tabEnabled():Boolean;
           //通过键盘获取焦点的顺序
           function get tabIndex():int;
           //自己已经获取了焦点,在这个函数中显示焦点框
           function setFocus():void;
           //绘制焦点框,draw参数指明是否获取了焦点
           function drawFocus(draw:Boolean):void;
注 意:事实上UIComponent已经实现了IFocusManagerComponent的全部方法,但并没有实现 IFocusManagerComponent接口,这意味着:如果你要进行焦点管理,要在子类上实现IFocusManagerComponent接口 (尽管不需要额外的方法),如果不实现该接口,则意味着不需要焦点管理.
FocusManager不对组件 tabEnabled、tabChildren 和 mouseFocusEnabled 属性的变化进行监视,所以改变这些属性后,需要将组件从新添加到显示列表(addChild),才能使FocusManager更新这些属性
IFocusManagerGroup:表明几个同样的类组成了一个整体,作为焦点的对象,就像几个RadioButton一样.
           //作为一个整体(group)的名字
           function get groupName():String;
           function set groupName(value:String):void;
           //指示自己是否被选择了
           function get selected():Boolean;
           function set selected(value:Boolean):void;
这个类是为类似RadioButton的组件专用的.
IFocusManager:这个接口是用来自定义一个FocusManager的,在这里不做过多介绍
只要继承里UIComponent,你几乎不必考虑焦点管理的问题,因为UIComponent会帮你处理焦点.如果你需要更高级的焦点管理,则可以监听FocusEvent.FOCUS_IN和FocusEvent.FOCUS_OUT事件.

原创粉丝点击