簡體   English   中英

AS3 flash CC我要設置文本字段的父Movieclip的寬度

[英]AS3 flash CC I want to set the width of the parent Movieclip of a Textfield

我動態創建了一堆文本字段,其數量取決於xml輸入。 文本字段需要啟用按鈕,因此我認為最簡單的解決方案是將它們放在movieclip和movieClip的buttonMode中。

層次結構如下所示:main(擴展MovieClip)-> klankoefening(MovieClip)-> Textfieldparent(MovieClip)-> Textfield

我有一個變量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 怎么了?

考慮繪制所需寬度和高度的基礎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();

在多考慮了您的問題之后,我認為您的問題是您添加文本的按鈕具有完全由TextField定義的寬度,並且由於您將文本設置為autoSize,因此將其恢復為原始大小寬度。

您需要做的是使寬度更能表明您的需要,並允許輕松單擊按鈕,是在tfContainer mc中創建一個透明矩形,設置tfContainer的寬度,然后將文本添加到按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM