2012-11-20 42 views
0

我需要一些幫助。在Flash中,我從組件面板設計了一個sinmple按鈕。我給它的實例名稱爲btn_one。我試圖做的是每次用戶點擊按鈕我想要按鈕將文本從發送到下一個。但是,你如何做到這一點?AS3按鈕在按下時改變文字

不幸的是,我對as3的知識有限。他們是很多as3按鈕的教程,但我還沒有找到任何關於這個。如果你們能向我展示一些代碼示例或者提供一些教程鏈接,我將非常感激。

感謝

+0

如果我的回答對您滿意,請點擊答案下方的「打勾」標記爲已接受,這有助於您和其他可能會遇到類似問題並會發現此問題的人。 – Vesper

回答

1

我試圖做一些事情SimpleButtons'文本字段,並用下面的代碼上來。希望它會有所幫助。

public class GenericTextButton extends flash.display.SimpleButton { 
    public var buttonText:String; 
    private var tfs:Vector.<TextField>;  
    public function GenericTextButton():void 
     { 
     tfs=new Vector.<TextField>(); 
     var tc:DisplayObjectContainer; 
     var i:int; 
     // now let's init embedded TFs 
     // trace((upState as DisplayObjectContainer).numChildren); // wow there's property available! YES 
     if (upState is DisplayObjectContainer) { 
      tc=(upState as DisplayObjectContainer); 
      for (i=0;i<tc.numChildren;i++) 
       if (tc.getChildAt(i) is TextField) tfs.push(tc.getChildAt(i) as TextField); 
     } // now same with overState and downState 
     if (overState is DisplayObjectContainer) { 
      tc=(overState as DisplayObjectContainer); 
      for (i=0;i<tc.numChildren;i++) 
       if (tc.getChildAt(i) is TextField) tfs.push(tc.getChildAt(i) as TextField); 
     } 
     if (downState is DisplayObjectContainer) { 
      tc=(downState as DisplayObjectContainer); 
      for (i=0;i<tc.numChildren;i++) 
       if (tc.getChildAt(i) is TextField) tfs.push(tc.getChildAt(i) as TextField); 
     } 
     // trace(name+' has '+tfs.length+' textfields'); // 3 !!!! Unbelieveable, but true 
    } 
    public function setText(the_text:String):void { 
     for (var i:int=0;i<tfs.length;i++) tfs[i].text=the_text; // and NOW we can do as simple as this 
    } 
} 

它能做什麼:你申報你的按鈕實例作爲GenericTextButton後代,而不是SimpleButton的,那麼你就必須提供setText()方法立即改變該按鈕,無論你提供的所有文本。它枚舉SimpleButton的內部結構,抓取任何TextField,並將其存儲在Vector中以便於參考。