2012-07-18 90 views
2

我在使代碼正常工作時遇到了一些問題。我想更改按鈕內文本字段上的文本。它可以工作,但只適用於upState。只要我懸停或點擊按鈕,它就會變回原來的名稱。有什麼辦法可以將它定義爲anyState嗎?在as3中更改按鈕內的動態文本字段

var doc:DisplayObjectContainer = m1.upState as DisplayObjectContainer; 
var tf:TextField = doc.getChildAt(1) as TextField; 

var boldText:TextFormat = new TextFormat(); 
boldText.bold = true; 

tf.text = "Sterno Cleido Mastoid"; 
tf.setTextFormat(boldText); 

例子: http://www.testdummies.dk/dynamictext.fla

+2

如果您創建的是時間線上的Flash按鈕,請嘗試將文本字段放置在其自己的圖層上,而不需要在不同的按鈕狀態下使用關鍵幀。 – BadFeelingAboutThis 2012-07-18 21:51:01

+0

發佈您的fla文件以獲得更好的幫助 – BadFeelingAboutThis 2012-07-18 22:00:37

回答

2

你的問題是你的代碼只是改變了按鈕向上狀態的文本。其他州保持不變。

你可以簡單地複製並粘貼您的代碼做了一遍又下降狀態相同的變化 - 現有的代碼之後添加此代碼將做到這一點:

doc = m1.overState as DisplayObjectContainer; 
tf = doc.getChildAt(1) as TextField; 
tf.text = "Neck"; 
tf.setTextFormat(boldText); 

doc = m1.downState as DisplayObjectContainer; 
tf = doc.getChildAt(1) as TextField; 
tf.text = "Neck"; 
tf.setTextFormat(boldText); 

這是一個尷尬的方式雖然給爲一個按鈕編寫簡單的文本更改。創建一個自定義按鈕類,或者甚至將一個movieClip作爲一個按鈕來工作會更加乾淨。如果您需要幫助瞭解這些事情,請創建一個新問題。

+0

我實際上要做的是更改for循環中的所有按鈕文本。我有一個不同語言的XML文件,我會告訴閃光燈通過JS使用哪種語言。所以它不僅僅是1個按鈕,而是15個左右。例如,每個按鈕都有一個非常特殊的hitbox(奇怪的形狀),我被告知movieclip不支持這個。似乎我將需要爲每個狀態複製粘貼代碼.. – Resin01 2012-07-19 07:24:17

+0

它複製粘貼工作得很好。當我使用for循環時,它沒有那麼多代碼:)謝謝 – Resin01 2012-07-19 12:27:25

0

我把按鈕的頂部自己的圖層上的文本字段,所以它總是有相同的文字,無論按鈕的狀態。

或者,您也可以將該代碼複製並粘貼到每個按鈕狀態,然後更改代碼以反映當前狀態。 (儘管第一種解決方案更快/更容易)

相關問題