2012-10-15 126 views
1

我有3個動畫片段,每個都有一個文本框作爲孩子。AS3訪問文本字段

我設置激活一個與

var myroot:MovieClip = this.root as MovieClip; 
var activeText:MovieClip; 

這工作

function keyClicked (e:MouseEvent) { 
    myroot.firstname_mc.getChildAt(0).text += "hello"; 
} 

這不

function keyClicked (e:MouseEvent) { 
    activeText.getChildAt(0).text += "hello"; 
} 

我怎樣才能得到這個工作動態?

+1

var activeText:MovieClip = this.root.firstname_mc –

+0

活動文本已經是mc我如何獲取名稱trace(activeText.name); – LeBlaireau

回答

2

你的整個問題是你正在嘗試做你不應該做的事情。你應該做的是寫封裝所需行爲的類,讓他們處理細節。例如:現在

package view { 
    public class Label extends MovieClip { 
     /* This is public so the Flash Player can 
     populate it, not so you can "talk" to it 
     from outside. This is a stage instance 
     */ 
     public var tf:TextField; 
     protected var _text:String; 
     public function get text():String { 
     return _text; 
     } 
     public var set text(value:String):void { 
     if (value != _text) { 
      _text = value; 
      tf.text = _text; 
     } 
     } 
    } 

} 

,在主文檔類,你作爲標籤類型activeText,然後你可以設置它的文字是這樣的:

activeText.text += 'hello'; 

,現在您可以重複使用的新類寫了各種不同外觀的標籤,只要每個標籤包含一個名爲tf的TextField即可。

+0

這看起來不錯。謝謝。 – LeBlaireau