0

すべてのボタンを中央の場所から制御するために作成したクラスがあります。ボタンはロード時に配列にプッシュされ、for ループが MouseEvent.CLICK イベント リスナーを配列内のすべてのボタンに追加します。

今、私の問題は、このイベントリスナーに関連付けられた関数にあります。switch ステートメントを作成しました

function btnclick(e:MouseEvent):void
    {
        switch (e.currentTarget)
        {
            case Profile_btn_63 :
                removearrayreference(this);
                e.currentTarget.parent.gotoAndStop("profile");
                break;

        }
    }

しかし問題は、ゲームをテストすると Profile_btn_63 is undefined と表示されることです。ボタンはまだボタン配列に追加されておらず、イベントリスナーも配置されていないため、これは実際には最初のフレーム (最初のフレーム) に当てはまります。そのため、最終的に定義されるまで Profile_btn_63 が未定義であることを flash が無視するようにするための助けが必要です。

最後に、これは少し話題から外れているかもしれませんが、ボタン配列にプッシュされたときに _63 が Profile_btn の最後に追加される理由を知っている人はいますか?

4

1 に答える 1

0

プログラム内のすべてを実行する「魔法の switch ステートメント」を使用する場合 (これは複数の点で恐ろしい考えですが、それは別の問題ですcase)、インスタンス名に基づいて決定を下す必要があります。switch( e.currentTarget.name )

ボタン インスタンスはnullまたはundefinedである可能性がありますが、定数 String は決してそうではありません。

于 2012-07-08T07:45:51.733 に答える