AS3专注于特定组件

时间:2018-04-12 07:35:11

标签: actionscript-3 flash flex

我有一个包含多个组件的表单:datagrid,textArea,文本输入... 对于每个组件,FocusIn Event都可用。

var objTarget:String;
     protected function memo_focusInHandler(event:FocusEvent):void
            {
                objTarget=event.currentTarget.id;       
}

使用memo_focusInHandler,我知道哪个有焦点。

我的目标是备份最后一个焦点对象,并重新打开关注此对象的窗口。 我试着这样做:

objTarget.setfocus(); 

但它不起作用。你能帮忙找到实现目标的最佳途径吗?

最好的问候。

3 个答案:

答案 0 :(得分:2)

字符串不是显示对象,因此它不能在focus中。舞台上字符串的表示形式是TextField。

在as3中,您可以使用舞台方法将焦点设置为所需目标:

stage.focus = myTarget;

请参阅相应的文档部分:https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#focus

答案 1 :(得分:1)

没有必要(您已经显示)使用字符串id引用。直接使用对象引用会更简单(也更有效)。

var objTarget:Object; // Object instead of type :String

protected function memo_focusInHandler(event:FocusEvent):void {
    objTarget = event.currentTarget;  //instead of the currentTarget's id property, assign the current target itself       
}

然后,当你想重置焦点时,你可以这样做:

if(objTarget is TextInput || objTarget is TextArea){  //make sure it's a text input or text area first - optional but recommended if you don't like errors
    objTarget.selectRange(objTarget.text.length, objTarget.text.length); //set cursor to the end
    objTarget.setFocus(); //focus the text input/area
}

答案 2 :(得分:0)

我找到了解决方案:

this[objTarget].selectRange(this[objTarget].text.length, this[objTarget].text.length);

    this[objTarget].setFocus();

祝你好运