2011-04-03 42 views
0

我正在設計一個Flash應用程序,它需要來自用戶的兩個或三個數據。第三個數據元素僅在其他元素之一已經從默認值更改時才相關。如何保持元素灰色,除非符合條件?

爲了防止用戶輸入會使輸入偏差的信息,如果默認條件不變,我該如何灰化文本輸入框?我可以嵌入一個條件來忽略來自該特定框的輸入,但我知道有些用戶將填寫所有數據字段,而不管屏幕上的指示如何。

回答

1

只需使用Event.CHANGE偵聽器+處理程序來檢查元素的狀態/狀態。每當用戶更改組件時,都會觸發此事件。例如,繼承人文本輸入這樣做:

var tf:TextInput = new TextInput(); 

var someOtherObject:Button = new Button(); 

tf.x = 100; 
tf.y = 100; 
tf.width = 150; 

stage.addChild(tf); 
stage.addChild(someOtherObject); 

tf.addEventListener(Event.CHANGE, onFormChanged); 

private function onFormChanged(e:Event):void 
{ 
    switch(e.currentTarget){ 
     case tf: 
     //Do your conditional checks here. 
     if(tf.text.toString().length < 10){ 
      someOtherObject.enabled = false; 
      someOtherObject.text = ""; 
      someOtherObject.maxChars = 0; 
     }else{ 
      someOtherObject.maxChars = 100; 
     } 
     break; 

     case someOtherObject: 

     break; 
    } 
} 

所以基本上,當用戶鍵入到TF,我確保他們已經進入至少10個字符。如果它們符合條件,然後擦除一個字符,事件將再次被觸發,並且條件不會被滿足,所以一些OtherObject被禁用。

+0

這適用於按鈕,但不適用於文本字段。我不得不使用'textfield.selectable = false'來禁用輸入,但文本仍然可以輸入,它根本就沒有提交。 – Jason 2011-04-03 23:55:17

+0

http://www.adobe.com/go/as3lr當您需要找出與特定組件/類進行交互的特定方式時,請使用語言參考。在TextInput的情況下,您可以簡單地將maxChars屬性設置爲0,並通過設置textInput.text =「」;來清除所有內容。但是你說的是正確的,我說你可以簡單地禁用它,但實際上並不適用於這個確切的組件。不幸的是,這就是閃光的本質。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/controls/TextInput.html#maxChars。 – 2011-04-04 02:32:52

+0

我已更新示例以解決您提出的問題。 – 2011-04-04 02:34:29