Actionscript 3 如何在没有阶段引用的情况下设置输入文本字段的焦点?
我得到一个文本输入字段:Actionscript 3 如何在没有阶段引用的情况下设置输入文本字段的焦点?,actionscript-3,input,focus,textinput,setfocus,Actionscript 3,Input,Focus,Textinput,Setfocus,我得到一个文本输入字段: var textfield:TextField = new TextField(); textfield.text = ""; textfield.type = TextFieldType.INPUT; addChild(textfield); 由于此textfield不在主类中,因此我没有用于执行以下操作的阶段引用: textfield.stage.focus = textfield; or stage.focus = textfield 如何强制文本字段在位置
var textfield:TextField = new TextField();
textfield.text = "";
textfield.type = TextFieldType.INPUT;
addChild(textfield);
由于此textfield不在主类中,因此我没有用于执行以下操作的阶段引用:
textfield.stage.focus = textfield;
or
stage.focus = textfield
如何强制文本字段在位置0处显示闪烁线?您可以在主类中添加对stage的静态引用,并通过它设置焦点(或者创建dedicated类以在任何位置获取stage引用) 主要类别代码:
public class MainClass extends Sprite{
public static var STAGE : Stage;
public function MainClass(){
STAGE = stage;
}
}
MainClass.STAGE.focus = myTextfield;
Textfield类代码:
public class MainClass extends Sprite{
public static var STAGE : Stage;
public function MainClass(){
STAGE = stage;
}
}
MainClass.STAGE.focus = myTextfield;
这有点像flash播放器的bug,因为如果你用stage.focus=textfield设置焦点,textfield实际上有焦点(你可以写一些东西),但是没有闪烁的光标。另一方面,有一个闪烁的光标,但只有当您在播放器中本地启动swf时(而不是在浏览器中)。
为了让人们知道他们现在可以写东西,你可以自己制作一个光标——只需创建一条线,设置它的动画,并在有人写第一个字母时隐藏 光标焦点有时确实有效,这更令人沮丧。我有两个几乎完全相同的应用程序。不工作的一个正在运行动画。这可能是一场冲突。我终于找到了解决办法 试试这个代码,它会工作的
public function SetFocus(mc:TextField):void{
addEventListener(Event.ENTER_FRAME,focus);
function focus(E:Event){
stage.focus=mc;
if(mc.name.toString()==stage.focus.name.toString()){
removeEventListener(Event.ENTER_FRAME,focus);
}
}
}
您必须命名文本字段,然后才能轻松使用它我使用来自casalib的StagerReference,但是即使我有这个阶段引用,我也不能写textfield.myStageReference.focus=textfield…你能提供一个小例子吗?你应该总是重新考虑让整个应用程序都可以全局访问这个阶段。在这种情况下,我的文本框周围有一个黄色边框…我仍然不能直接写类型(我正在使用AdobeAIR/flashbuilder)它解决了我的问题:我首先关注TextField所在的容器……TextField所在的类,它是
DisplayObject
的子类吗?