1

表示オブジェクトの「name」プロパティとgetChildByName("XXX")関数で検出された値の違いを説明できる人はいますか? 90% の確率で同じですが、そうではなくなり、バラバラになります。

たとえば、次のコードでは、子の name プロパティを直接調べることによってのみ、インスタンス名でオブジェクトを見つけます。getChildByName()は失敗します。

var gfx:MovieClip = new a_Character(); //(a library object exported for Actionscript)

var do1:DisplayObject = null;
var do2:DisplayObject = null;

for( var i:int = 0 ; i < gfx.amSword.numChildren ; i++ )
{
    var child:DisplayObject = gfx.amSword.getChildAt(i);
    if( child.name == "amWeaponExchange" )  //An instance name set in the IDE
    {
        do2 = child;
    }
}

trace("do2:", do2 );

var do1:DisplayObject = gfx.amSword.getChildByName("amWeaponExchange");

次の出力が生成されます。

do2: [object MovieClip]
ReferenceError: Error #1069: Property amWeaponExchange not found on builtin.as$0.MethodClosure and there is no default value.

Flash が考えているアイデアはありますか?

4

5 に答える 5

4

ご自身で直されたようです!

と:

var do1:DisplayObject = gfx.amSword.getChildByName["amWeaponExchange"];

次のエラーが表示されます。

ReferenceError: Error #1069: Property amWeaponExchange not found on builtin.as$0.MethodClosure and there is no default value.

コンパイラは実際の getChildByNameメソッドでプロパティ「amWeaponExchange」を探しているためです。

次のように変更すると:

var do1:DisplayObject = gfx.amSword.getChildByName("amWeaponExchange");

編集で行ったように、子を正常に見つけてコンパイルします。

于 2008-09-23T16:10:29.433 に答える
0

私はあなたが何をしているのか本当に理解できていません。しかし、私が見つけた 1 つのことは、最初のフレームで MovieClip の子にアクセスするのは少し信頼できないということです。たとえば、 gotoAndStop() を実行してから、そのフレームにある子にアクセスすることはできません。使用できるようになるまでフレームを待機する必要があります。

于 2008-09-22T07:22:50.660 に答える
0

ある場所では gfx.amSword をループしており、別の e.gfx.amSword では e がありません。?

また、それは問題の原因ではありませんが、クラス名は大文字で始め、アンダースコアを含めないでください。「a_Character」は「Character」である必要があります。

于 2008-09-22T11:45:49.000 に答える
0

おっと、あなたは e について正しいです、Iain、しかしそれは問題ではありません。私は問題に集中するためにコードから e を削除しましたが、それをキャッチしませんでした。

失敗のより明確な例を投稿する必要があると思います。おかしなクラス名は、「Actionscript のエクスポート」を使用して Flash IDE によって自動生成されたクラスの私個人の命名規則にすぎませんが、問題を混乱させています。

于 2008-09-22T14:47:06.647 に答える
-1

最初の回答で誤解しました。

これは、ActionScript 3.0 の [設定] ダイアログの [ステージ インスタンスを自動的に宣言する] という Flash IDE のパブリッシュ設定に関係している可能性があります。

于 2008-09-22T14:56:17.983 に答える