2011-05-09 70 views
2

我有一個文本InputField:如何設置輸入文本字段的焦點,而無需一個stagereference?

var textfield:TextField = new TextField(); 
textfield.text = ""; 
textfield.type = TextFieldType.INPUT; 
addChild(textfield); 

因爲這個文本框不駐留在主類,我沒有做一臺參考:

textfield.stage.focus = textfield; 
or 
stage.focus = textfield 

哪有我強制文本框在位置零時顯示閃爍的線?

+0

該文本框駐留在類,是它是DisplayObject的子類嗎? – Taurayi 2011-05-09 12:01:41

回答

2

您可以通過添加在你的主類的靜態引用到舞臺,並將焦點(或創建一個dedicaced類來獲得系統的基準無論你在哪裏)。

主要類代碼:

public class MainClass extends Sprite{ 
    public static var STAGE : Stage; 

    public function MainClass(){ 
     STAGE = stage; 
    } 
} 

TextField類代碼:

MainClass.STAGE.focus = myTextfield; 
+0

我使用casalib一個stagereference,但即使我有這個階段,參考我寫不了textfield.myStageReference.focus =文本框...你能提供一個小的例子嗎? – algro 2011-05-09 09:27:52

+0

我添加的代碼示例 – 2011-05-09 09:36:52

+0

你應該總是考慮能否舞臺全局應用於整個應用程序訪問。 – Taurayi 2011-05-09 12:00:06

1

這有點Flash播放器的bug,因爲如果將焦點設置與stage.focus =文本框,文本框實際上有焦點(你可以寫一些東西),但沒有閃爍的光標。另一方面,有一個閃爍的光標,但只有當你在播放器本地啓動swf(不在瀏覽器中)。 要告知他們可以寫東西的人,現在,你可以做一個光標自己 - 只需創建一個線,以動畫播放,當有人寫了一首字母隱藏。

+0

我剛剛在我的文本框中找到一行,沒有直接輸入可能... – algro 2011-05-09 14:01:17

0

光標焦點有時確實工作,這是更加令人沮喪。我有兩個幾乎完全相同的應用程序的情況。不工作的那個人正在運行一個動畫。這可能是一個衝突。

0

我終於得到了解決

試試這個代碼將工作

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); 
     } 
    } 
} 

你的名字文本字段,那麼你可以很容易地使用它

相關問題