AS3:TextField Focus
问题描述:
我正在尝试处理TextField上的焦点事件,因此我可以在对焦(选项卡或单击)时选择所有文本。好像我在这里做错了什么?AS3:TextField Focus
txtTextField.addEventListener(FocusEvent.FOCUS_IN, handleFocusIn);
function handleFocusIn() {
//select all text here
}
答
你handleFocusIn
应该有签名
function handleFocusIn(event:FocusEvent) // or just Event
答
我曾在一个发展(闪存)的原型相类似的问题。 一个textfield根本没有触发FocusEvent.FOCUS_OUT事件。 问题是我在舞台上有一个Button组件。 只要我用从头开始创建的自定义按钮替换了Flash Button组件实例,我就可以使用它了。 我一直无法通过互联网找到这个错误和解决方案。
使用舞台上的Button组件,我只在第一次点击它时才获得FOCUS_IN事件。 之后,我既没有收到FOCUS_OUT也没有收到FOCUS_IN事件。
我希望这可以帮助任何人。
答
我需要同样的东西,当它接收焦点时选择文本字段的内容。
我尝试:
A)一个FocusEvent后简单地选择。这似乎并不奏效(我的猜测是FocusEvents在正在处理鼠标单击之前触发,这反过来会撤消选择)。 B)选择每次点击鼠标。这是有效的,但这对于稍后仅想选择文本的一部分的用户来说非常烦人,因为这种尝试总是会导致所有内容被选中。
以下解决方法似乎工作,虽然:
myTextField.addEventListener(MouseEvent.CLICK, selectAllOnce);
function selectAllOnce(e:MouseEvent) {
e.target.removeEventListener(MouseEvent.CLICK, selectAllOnce);
e.target.addEventListener(FocusEvent.FOCUS_OUT, addSelectListener);
selectAll(e);
}
function addSelectListener(e:FocusEvent) {
e.target.addEventListener(MouseEvent.CLICK, selectAllOnce);
e.target.removeEventListener(FocusEvent.FOCUS_OUT, addSelectListener);
}
function selectAll(e:Event) {
e.target.setSelection(0, e.target.getLineLength(0));
}
希望有所帮助。我个人认为,如果Adobe为这个TextField对象添加了一个选项,这将是最合乎逻辑的。
答
我正在做我这样的处理程序。工程就像一个魅力:
private function onFocusIn(e:FocusEvent):void
{
setTimeout(title.setSelection, 100, 0, e.target.text.length);
}
答
你可以找到用户不会只选择这样的文本的一部分:
private function clickHandler(e:MouseEvent){
if(tfield.selectionBeginIndex == tfield.selectionEndIndex){
tfield.setSelection(0, tfield.length);
}
}
答
简单的解决办法是:
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.FocusEvent;
tf.addEventListener(FocusEvent.FOCUS_IN, handleFocusIn);
function handleFocusIn(e:FocusEvent):void
{
tf.addEventListener(MouseEvent.MOUSE_UP, preventLosingSelection);
tf.setSelection(0, tf.length);
stage.focus = tf;
}
function preventLosingSelection(e:MouseEvent):void
{
tf.removeEventListener(MouseEvent.MOUSE_UP, preventLosingSelection);
tf.setSelection(0, tf.length);
stage.focus = tf;
}
希望这有助于为将来有人!