0

一連のテキストフィールドを動的に作成しましたが、その数は xml 入力に依存します。テキストフィールドはボタンを有効にする必要があるため、最も簡単な解決策は、それらをムービークリップとそのムービークリップのボタンモードに配置することだと思いました。

階層は次のようになります: main (ムービークリップを拡張) -> 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

2 番目のループで、すべての Textfieldparents の幅を maxw に設定する必要があると述べたので、これは奇妙だと思います。何が起こっている?

4

2 に答える 2

1

Rectangle必要な幅と高さの下敷きを描くことを検討してください。そのために使用できますmcs.graphics。秘訣は、 a の幅はDisplayObjectContainer計算されたプロパティであり、それを変更するとスケールが変更される可能性が高いということです。たとえば、MC には (1000,0) にあるものと (0,0) にあるものの 2 つの形状がチルレンとしてあり、両方とも幅が 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();
于 2013-07-31T11:20:06.740 に答える
0

あなたの問題についてもう少し考えた後、あなたの問題は、テキストを追加しているボタンの幅が TextField によって完全に定義されていることであり、テキストを autoSize に設定しているため、元の状態に戻っていると思います幅。

必要なものを幅で示し、ボタンをクリックしやすくするために必要なことは、tfContainer mc で透明な四角形を作成し、tfContainer の幅を設定し、テキストをボタン。

于 2013-07-31T11:20:21.977 に答える