AS3 将重点放在特定组件上
AS3 set focus on specific component
我有一个包含多个组件的表单:datagrid、textArea、文本输入...
对于每个组件,FocusIn 事件都可用。
var objTarget:String;
protected function memo_focusInHandler(event:FocusEvent):void
{
objTarget=event.currentTarget.id;
}
有了memo_focusInHandler,我知道哪个有焦点。
我的目标是备份最后一个焦点对象,然后重新打开 Windows 并将焦点放在这个对象上。
我尝试这样做:
objTarget.setfocus();
但是没用。你能帮我找到实现目标的最佳方法吗?
字符串不是显示对象,因此不能在focus
中。字符串在舞台上的表示是一个 TextField。
在 as3 中,您可以使用 stage 方法将焦点设置到所需的目标:
stage.focus = myTarget;
请参阅相应的文档部分:https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#focus
我找到了解决方案:
this[objTarget].selectRange(this[objTarget].text.length, this[objTarget].text.length);
this[objTarget].setFocus();
不需要(如您所示)使用字符串 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
}
我有一个包含多个组件的表单:datagrid、textArea、文本输入... 对于每个组件,FocusIn 事件都可用。
var objTarget:String;
protected function memo_focusInHandler(event:FocusEvent):void
{
objTarget=event.currentTarget.id;
}
有了memo_focusInHandler,我知道哪个有焦点。
我的目标是备份最后一个焦点对象,然后重新打开 Windows 并将焦点放在这个对象上。 我尝试这样做:
objTarget.setfocus();
但是没用。你能帮我找到实现目标的最佳方法吗?
字符串不是显示对象,因此不能在focus
中。字符串在舞台上的表示是一个 TextField。
在 as3 中,您可以使用 stage 方法将焦点设置到所需的目标:
stage.focus = myTarget;
请参阅相应的文档部分:https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#focus
我找到了解决方案:
this[objTarget].selectRange(this[objTarget].text.length, this[objTarget].text.length);
this[objTarget].setFocus();
不需要(如您所示)使用字符串 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
}