0

私は、この小さな Flash 8/AS2 プロジェクトでの「DOM」参照に責任を持とうとしています。

他のムービー クリップやオブジェクトへの参照を取得することは、ますます苛立たしいものになっています。たとえば、現在、フォームの送信ボタンにアクセスするための私のコードは次のようになっています

var b:Button = _level0.instance4.submitBtn;

AS3MovieClip.getChildByName()または Javascript のdocument.getElementById(). これらの匿名インスタンスの名前を (instance4上記のように) ハードコーディングすると、本当に汚いと感じるからです。

しかし、この AS2 Referenceでそのようなものを見つけることができません。

4

3 に答える 3

1

これを行うにはいくつかの方法があります。最も簡単な方法は、配列表記を使用することです。前の例は次のようになります。

var b:Button = _root.instance4.submitBtn;

配列表記では次のようになります。

var b:Button = _root["instance4"].submitBtn;

したがって、既に作成された 100 個のボタンをループして、アルファを 0 に設定する場合:

for( var i:Number = 0; i < 101; i++)
{
     var button:Button = _root["instance"+i].submitBtn;
     button._alpha = 0;
}

eval("instance4") を使用して同じことを行うこともできますが、関連するスコープの問題については少しわかりません。

于 2008-11-11T04:20:32.927 に答える
1

ムービークリップが Flash IDE のステージに配置されている場合は、プロパティ パネルで適切なインスタンス名を付けることができます。

動的に追加された場合は、名前を付けて、さらに参照を保存することもできます。

var my_MC=createEmptyMovieClip("instanceName", depth);

どちらの場合でも、_parentClip.instanceNameまたはでそれらをアドレス指定できます。my_MC.

于 2008-11-05T20:49:08.297 に答える
0

自分で書くこともできます(コードはテストされていませんが、アイデアは得られます):

MovieClip.prototype.getElementByName = function(name : String) : Object
{
    var s : String;
    var mc : Movieclip = null;

    for( s in this )
    {
        if( this[s] instanceof MovieClip )
        {
            if( s == name )
            {
                mc = this[ s ];
                break;
            }

            mc = this[s].getElementByName( name );
        }
    }

    return( mc );
}
于 2008-11-05T22:08:27.997 に答える