9.23.响应文本选中和取消选中事件

问题
我想当选中文本时激活某个事件执行一些任务
解决办法
监听focusIn 和focusOut 事件
讨论
当文本框获得焦点时会激活focusIn 事件,失去焦点时激活focusOut 事件,两个事件都是flash.events.FocusEvent 对象。FocusEvent 类定义了一个叫relatedObject属性,当激活focusIn 事件时relatedObject属性指向获得焦点的对象,当激活focusOut事件时relatedObject 属性指向刚刚获得焦点的对象。通过flash.events.FocusEvent 类的FOCUS_IN和FOCUS_OUT 常量注册事件:
+展开
-ActionScript
field.addEventListener(FocusEvent.FOCUS_IN, onFocus);

当焦点改变时focusIn和focusOut 事件会同时激活,它们属于不可取消的事件,如果想取消这些事件则必须在触发它们之间注册监听事件。keyFocusChange 和mouseFocusChange 是可取消的事件,可使用FocusEvent 类的KEY_FOCUS_CHANGE 和MOUSE_FOCUS_CHANGE常量注册事件,FocusEvent.preventDefault( ) 方法可取消默认事件,下面的例子演示通过Tab键移动焦点,当field1没有内容时取消焦点移动:
+展开
-ActionScript
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.events.FocusEvent;
public class Text extends Sprite {
private var _field1:TextField;
private var _field2:TextField;
public function Text( ) {
_field1 = new TextField( );
_field1.border = true;
_field1.background = true;
_field1.type = TextFieldType.INPUT;
addChild(_field1);
_field1.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocus);
_field2 = new TextField( );
_field2.border = true;
_field2.background = true;
_field2.type = TextFieldType.INPUT;
addChild(_field2);
_field2.y = 100;
}
private function onKeyFocus(event:FocusEvent):void {
if(_field1.text == "") {
event.preventDefault( );
}
}
}
}

加支付宝好友偷能量挖...


评论(0)网络
阅读(115)喜欢(0)flash/flex/fcs/AIR