9

を介して入力フィールドを作成している場合MXML、幅を に設定でき100%ます。しかし、実行時に ActionScript を使用してこれを行うことはできないようです。

これは機能します:

<mx:TextInput ... width="100%" />

これはコンパイルされません。幅は文字列ではなく数値です。

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.width = "100%"

100%ActionScript を介して実行時に作成されたコンポーネントのサイズを設定するにはどうすればよいですか?

4

4 に答える 4

23

percentWidth属性の代わりに属性を使用するだけwidthです。

したがって、コードの 3 行目は次のようになります。

textinp.percentWidth = 100;

これもしばらくの間、私をつまずかせました。

于 2009-06-25T20:39:38.043 に答える
10

後で同じコンポーネントのピクセルベースの幅に戻したい場合は、次のことを行う必要があります。

textinp.percentWidth = NaN;
于 2009-07-06T16:43:33.193 に答える
3

上記の答えは正しいですが、私はそれについてコメントすることはできません。私はSOに慣れていないからです。

この機能をカスタムコンポーネントに追加する場合は、次のようにすることができます。

[PercentProxy("percentMultiplier")]
public function set multiplier(value:Number):void
{
  _multiplier = value;
  invalidSomethingOrDoSomething();
}

public function set percentMultiplier(value:Number):void
{
  multiplier = value / 100;
}

もちろん、widthの処理を行う場合、ContainerサブクラスはpercentWidthを検索し、メタダを検査しないため、可能であっても、 widthInPercentなどとは呼ばないでください。

于 2009-06-26T04:53:31.880 に答える
1

答えは次のとおりです。

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.percentWidth = 100;
于 2009-06-26T08:13:22.057 に答える