1

ユーザー変数に基づいて複数のテキストフィールドを作成する配列があります。以下のコードは、テキストが追加されたときに起動する関数に接続されています。そこから、最も幅の広いテキスト フィールドを見つけて、残りのテキスト フィールドに幅を適用して、すべてが同じサイズになるようにする必要があります。

これが私に問題を引き起こしているコードです。おそらく、私の構文が不適切かどうか、またはこれを行うためのより良い方法があるかどうかを確認するために、もう一度確認することができます。

for (var ied: int=1; ied>=electoff.electinput.textArray.length; ied++)
{
    trace("one");
    widest=(electoff.electinput.textArray["b"+ied].width>widest)?electoff.electinput.textArray["b"+ied].width:widest;

}
for (i =ied; i<electoff.electinput.textArray.length; ied++)
{
    electoff.electinput.textArray["b"+ied].width = widest;
    trace("two");
}

これが私が得ているエラーです:

TypeError: エラー #1010: 用語が定義されておらず、プロパティがありません。NewPlv2_fla::MainTimeline/ajWidth()[NewPlv2_fla.MainTimeline::frame1:650] NewPlv2_fla::MainTimeline/_keys()[NewPlv2_fla.MainTimeline::frame1:774]

4

1 に答える 1

0

AS3.0配列のインデックスは 0 から始まります。つまり、配列の最初の要素は [0]、2 番目の要素は [1] などです。

参考までに、アクセスしようとしていますtextArray["b"+ided]。しかし、この構文は連想配列です

次のコードをテストしました。お会計お願いします。

import flash.text.TextField;
var arr:Array = [];

for(var i:int = 0; i<10; i++)
{
    var tf:TextField = new TextField();
    tf.width = 200 * Math.random();;
    tf.name = "tf" + i;
    tf.height = 100;
    arr.push(tf);
    trace(tf.name + ": " + tf.width);
}

var widest:Number = 0;
for (i=0;i<arr.length;i++)
{
    if(arr[i].width>widest) widest = arr[i].width;
}
trace("widest: " + widest);
于 2013-02-09T00:09:38.030 に答える