2011-04-05 120 views
1

嗨,我嘗試使用下面的代碼添加一個偵聽這將清除該領域的文本字段,但我得到的錯誤:閃光AS3添加焦點監聽器,輸入文本字段

「參數監聽器必須非空」

這是我使用的代碼:

//pos is the instance name of the textfield 
    var posText = currCard.cardBack.pos; 
    posText.addEventListener(MouseEvent.CLICK, clearText); 
    posText.type = TextFieldType.INPUT; 


    currCard.hit.visible = false; 

    function clearText(e:MouseEvent) { 
     trace ("clear"); 
     //posHolder = posText.text; 
     //posText.text = ""; 
    } 

我要補充一點,文本字段在舞臺上開始了作爲一個動態文本字段。在上面的代碼中,我將其類型更改爲輸入,因此可能會影響事物。

我試圖設置該字段,以便當用戶在文本字段中單擊時,會出現光標影片剪輯,並且該字段中的文本將被刪除,並且當他們離開文本字段並單擊在其他地方,文本被接受,文本字段轉換回動態字段,基本上將輸入的文本「鎖定」到字段中。

+0

你試圖達到什麼目標? – 2011-04-05 20:39:51

+0

上面修改的描述 – mheavers 2011-04-05 20:59:47

回答

2
var tfDynamic:TextField = new TextField() 
stage.addChild(tfDynamic) 
tfDynamic.width = 100 
tfDynamic.height = 20 
tfDynamic.x = 10 
tfDynamic.y = 10 
tfDynamic.border = true 
tfDynamic.type = TextFieldType.DYNAMIC; 
tfDynamic.text = "hello"; 


tfDynamic.addEventListener(FocusEvent.FOCUS_OUT, onFocusOut) 
var savedText:String 
function onFocusOut(e:FocusEvent):void{ 
    trace('onFocusOut') 
    savedText = tfDynamic.text 
    tfDynamic.type = TextFieldType.DYNAMIC; 

} 

tfDynamic.addEventListener(MouseEvent.CLICK, onclick) 
function onclick(e:MouseEvent):void{ 
    trace('onclick') 
    tfDynamic.text = ""; 
    tfDynamic.type = TextFieldType.INPUT; 
} 
+0

是的 - 就是這樣 - 當我添加一個偵聽器到我的文本字段進行點擊時,我得到的「參數必須是非空的」錯誤。我認爲這與文本字段以動態方式啓動並被改爲輸入字段有關。 – mheavers 2011-04-06 14:59:51

+0

我提供的代碼是一個完整功能的例子,你正在努力完成。唯一可能導致錯誤的其他事情是posText對象爲空,這意味着您沒有正確引用它。您是否嘗試在分配後正確跟蹤posText? – 2011-04-06 18:03:54

+0

啊 - 我認爲問題是我的onClick函數沒有指定返回類型(:void)。謝謝! – mheavers 2011-04-06 18:56:32

1

我不建議在這種情況下使用「MouseEvent.CLICK」,用「FocusEvent.FOCUS_OUT」,而不是因爲字段可能使用選擇Tab鍵

2

如果我有明確的文本框,我將使用FOCUS_IN。如果您使用onclick,當文本字段有焦點並且您再次單擊它時,文本字段將再次清除...我不確定您想要什麼。

這是FocusEvent reference