flex设置焦点


  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事件.

猜你喜欢

转载自qlpol22i.iteye.com/blog/1574409