2013-07-31 22 views
0

我已經動態地創建了一堆文本字段,其數量取決於xml輸入。文本框需要啓用按鈕,所以我認爲最簡單的解決方案是將它們放入動畫片段和按鈕模式中的動畫片段。AS3 flash CC我想設置文本字段的父MovieClip的寬度

層次結構是這樣的:主(擴展影片剪輯) - > klankoefening(電影剪輯) - > Textfieldparent(電影剪輯) - >文本字段

我有一個變量maxw其中包含了最大的文本框的寬度和我希望我所有的Textfieldparents都有這個寬度。

我試圖做這樣的:

//generate textfields 
keuzes = new XMLList(lijstOpties.categorie.(@cat == catname)); 
var nrs:int = keuzes.keuze.length(); //aantal keuzemogelijkheden 
var maxw:int = 0; //grootste breedte tf, nodig voor bepalen breedte knoppen 

for (var nr:int = 0; nr < nrs; nr++) { 
    var tf:TextField = createTextfield(werkfmt); 
    tf.text = keuzes.keuze[nr].toString(); 
    tf.autoSize = "center"; 
    tf.background = true; 
    tf.backgroundColor = 0xffcc33; 
    tf.border = true; 
    tf.borderColor = 0x000000; 
    tf.name = "keuzetf"; 
    tf.selectable = false; 
    tf.x = 0; 
    tf.y = 0; 

    if (tf.width > maxw) {maxw = tf.width;} 

    var tfcontainer:MovieClip = new MovieClip(); 
    tfcontainer.buttonMode = true; 
    tfcontainer.name = keuzes.keuze[nr].toString(); 
    tfcontainer.addChild(tf); 

    klankoefening.addChildAt(tfcontainer,nr); 
} 

for (var an:int = 0; an < 3; an++) { 
    var mcs:MovieClip = klankoefening.getChildAt(an) as MovieClip; 
    mcs.width = maxw; 
    trace ("mcs " + mcs.width); 

    var mtf:TextField = mcs.getChildAt(0) as TextField; 
      trace ("mtf " + mtf.text); 
} 

跟蹤結果是

mcs 32.05 
mcs 33 
mcs 21.25 

,我覺得奇怪,因爲我在第二圈表示,寬度爲所有Textfieldparents應設置爲maxw。發生什麼事?

+0

如果在將按鈕添加到movieClip之後設置按鈕的寬度,則將在其按鈕內伸展TextField。 – Glitcher

回答

1

考慮繪製所需寬度和高度的底層Rectangle。你可以使用mcs.graphics來做到這一點。關鍵是,DisplayObjectContainer的寬度是一個計算出來的屬性,改變它可能會導致規模的變化。例如,一個MC有兩個形狀,分別是(1000,0)和另一個(0,0),兩者的寬度都是10--這個MC的合成寬度將是1010.所以,不是改變寬度,通過在MC上繪製矩形來模擬其變化。

mcs.graphics.clear(); 
mcs.graphics.lineStyle(0,0,0); 
mcs.graphics.beginFill(0x808080,0); // bogus filled rect, to capture events 
mcs.graphics.drawRect(0,0,maxw,maxh); // height is needed too 
mcs.graphics.endFill(); 
+0

該死的。打敗我吧。 – Glitcher

+0

謝謝,這個作品完美:) – silvith

0

想詳細瞭解一下你的問題後,我覺得你的問題是,您要添加文本的按鈕具有由文本字段定義整個寬度,並且因爲你的文字設置爲AutoSize ,它回彈到原來的寬度。

,你需要做的,使寬度更能說明你需要什麼,並允許上的按鈕輕鬆點擊什麼是建立在tfContainer MC透明的矩形,設置tfContainer的寬度,然後添加文本到按鈕。

+0

我試圖關閉autoSize,但沒有任何區別。由於Vespers的答案更詳細一點,我接受了(並無恥地複製了代碼)感謝您的幫助! – silvith