2014-02-27 46 views
1

我對AS3相當陌生,我想知道如何將任何輸入到文本輸入變成變量?例如,如果我要輸入名爲「Jeffrey」的文本輸入名稱,那麼該名稱將變成變量,然後我可以使用它顯示「Hello,Jeffrey」或類似的名稱,而輸入的名稱將由Jeffrey替換。AS3有什麼我輸入到文本輸入變成一個變量?

+0

當你說你想輸入變成一個變量時,你是什麼意思?你的意思是說一個全新的變量會被衍生出來,而這個變量的*名稱*就是輸入的內容,或者你的意思是說一個現有的變量只會接受任何輸入的值。 – Panzercrisis

回答

1

實現這一點相當簡單。你可以這樣做的一種方法是在輸入時正在運行鍵盤事件。然後假設您已創建並準備好輸入的文本字段,您可以使用一個變量來存儲文本字段text屬性。所以,你會創建變量:

private var inputText:String; 

下一頁添加您的聽衆:

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); 

然後創建的偵聽器功能,在該功能您的變量設置爲文本字段的文本。在這個例子中,我們假設你的文本字段被稱爲myTextField

private function onKeyDown(e:KeyboardEvent):void { 
    textInput = myTextField.text; 
} 

現在您有每次按鍵時存儲的文本框的文本中的變量。

每當你與輸入完成後,從舞臺中刪除監聽器:

stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); 

現在也有另一種方式。您可以在TEXT_INPUT事件附加到文本字段和捕獲輸入那個樣子,就像這樣:

myTextField.addEventListener(TextEvent.TEXT_INPUT, onInput); 

public function onInput(e:TextEvent):void { 
    inputString = myTextField.text; 
} 
0

有兩個部分是:

1:定義「什麼鍵入到一個TextInput」 。

這樣做的原因是每次敲擊時都會敲擊一個按鍵。這一點很重要,因爲單詞「傑弗裏」,你有獲得輸入到有幾個不同的東西:

J 
Je 
Jef 
Jeff 
Jeffr 
Jeffre 
Jeffrey 

你可能不希望所有這些變成變量,但ActionScript 3.0中會更多或無論如何將這些視爲所有單獨的輸入。不知何故,你必須將「傑弗裏」與其他所有人區分開來。通常這是通過讓用戶點擊一個提交按鈕或者關閉TextInput的標籤來完成的,但是你必須做出決定。

2:添加一個詞典變量類和使用輸入作爲其關鍵因素之一:

private var myDict:Dictionary = new Dictionary(); 

每當程序決定該用戶已經完成了一個打字的東西輸入到TextInput(如提交按鈕的點擊處理程序),只需執行以下操作:

myDict[myTextInput.text] = new Object(); // or whatever value you want 

讓我們假設用戶輸入值「Jeffrey」。然後,你可以稍後再回來和訪問什麼是有效的變量由名稱:

myDict[myTextInput.text] = 5; // myTextInput.text == "Jeffrey" 
. 
. 
. 
trace(myDict["Jeffrey"]); // output is "5" 
trace(myDict.Jeffrey); // output is "5" 
trace(myDict[myTextInput.text]); // output is "5" if myTextInput.text is the same 

有效地回滾較早的編輯,先走一步,使用Dictionary,而不是一個Object。如果用戶輸入某些東西,如「12345」,如果您使用Dictionary,事情會變得更好。

+0

有趣的方式來解決它。但是使用字典似乎有點矯枉過正,尤其是與文本輸入事件和更新單個變量相比。 –

+1

看起來我們用不同的方式解釋了這個問題。看着這個問題,他可能意味着任何一個,看起來像。 – Panzercrisis

+0

是的,我同意,我可以看到這可以有多種解釋。 –