2011-06-21 50 views
0

我是flash新手,下面是我的腳本,我有3個textinput框,name1,name2,name3和3個動態文本,output1,output2,output3。一旦用戶輸入框中的文本,它應該在動態輸出文本中看起來完全相同。它適用於第一個,但不適用於第二個和第三個。我以不同的方式將changehandlers重命名爲刪除編譯錯誤,但現在只有第一個可以工作。有沒有更好的方式做到這一點,如果我想有多個文本主菜單?ActionScript 3.0 textInput和Display

name1.addEventListener(Event.CHANGE, changeHandler); 

function changeHandler(e:Event):void 
{ 
    output1.text = name1.text 

} 
name2.addEventListener(Event.CHANGE, changeHandler); 

function changeHandler1(e:Event):void 
{ 
    output2.text = name2.text; 
} 

name3.addEventListener(Event.CHANGE, changeHandler); 

function changeHandler2(e:Event):void 
{ 
    output3.text = name3.text; 
} 

回答

1

您忘了在後兩個addEventListener()調用中更改監聽器功能的名稱。它目前在所有三項活動中都會撥打changeHandler()

你應該有:

name2.addEventListener(Event.CHANGE, changeHandler1); 
name3.addEventListener(Event.CHANGE, changeHandler2); 

您可以創建管理與輸出文本字段加入了輸入文本字段類:

package 
{ 
    import flash.text.TextField; 
    import flash.events.Event; 

    public class TextBinder extends Object 
    { 
     // vars 
     private var _input:TextField; 
     private var _output:TextField; 

     /** 
     * Joins input with output 
     * @param inp The input text field 
     * @param outp The output text field 
     */ 
     public function join(inp:TextField, outp:TextField):void 
     { 
      _input = inp; 
      _output = outp; 

      _input.addEventListener(Event.CHANGE, _change); 
     } 

     /** 
     * Event.CHANGE 
     */ 
     private function _change(e:Event):void 
     { 
      _output.text = _input.text; 
     } 
    } 
} 

,現在你可以遍歷您的文本字段並使用它們加入它們:

var tb:TextBinder = new TextBinder(); 
tb.join(name1, output1); 
+0

謝謝你好,先生,這個作品完美,但我覺得必須有一個更有效的方式來做到這一點,對於每個文本字段,我必須寫這樣一個,我可以做一個循環或類似的東西,以取得更好的結果。 – Victor

+1

查看更新。您可以使用類更好地完善這個功能,我可以更新它並舉例說明。 – Marty

+0

循環沒有錯誤,但似乎沒有工作,當我在文本框中鍵入內容時,動態文本中沒有任何更改(輸出) – Victor