0

私はクラス(TheList.as)を持っています。ここには配列「データ」があり、いくつかの値があります。次に、「データ」配列の値を使用するスクロール可能なリストを作成するループがあります。【単位変換器を作ってみました】

次に、別のクラス「Units.as」があります。そのクラスでは、「TheList」の 3 つのインスタンスを作成しました。メイン リスト ("myList") と、サブリスト "ListFrom" および "ListTo" へ。「データ」配列の値を使用しています。これで、クリックされたアイテムに値が変化するテキストフィールドがあります。メインリストで「角度」をクリックすると、サブリストに(「度」、「ラジアン」など)が入力されます。

これが私が試したものです

if(myList._TextLabel.text == "Angle")
{
ListFrom.Data = ["Degree", "Radian"];
}

しかし、何も起こりません。エラーも発生しません。「ENTER_FRAME」イベントとトレース (ListFrom.Data) でこれを行うと、値が変更されることがわかりますが、リスト内のリスト項目に割り当てられません。本当に助かります。ありがとう!

状況をよりよく理解するための完全なクラスを次に示します (私は OOP の初心者なので、コードはかなり面倒です)。

TheList.as: http://pastebin.com/FLy5QV9i Units.as: http://pastebin.com/z2CcHZzC

4

2 に答える 2

0

必要なスタイルに応じて、イベント リスナーやシングルトン クラスを使用したり、あるクラスから別のクラスを参照したりできます。すべてが等しく有効で、高速/効率的です。

于 2013-06-04T07:13:43.877 に答える
0

ListFrom.Data = ["Degree","Radian"] を呼び出す場所で、データが変更されたときに ListFrom のレンダリングに新しいデータが設定されていることを確認します。たとえば、表示用に ListFrom で MyRender を使用する場合は、MyRender の set data メソッドでデバッグする必要があります。ListFrom.Data = ["Degree","Radian"]; を呼び出した後、以下のコードを呼び出す必要があります。

for (var i:int = 0; i < Data.legnth;i++) {
    var render:MyRender = ListFrom[i] as MyRender;

    if (render) {
         render.data = Data[i];
    } else {
         var render:MyRender = new MyRender();
         render.data = Data[i];
         ListFrom.addChild(render);
    }
}
于 2013-06-04T07:02:32.060 に答える