0

動的オブジェクトを含む if 条件を作成する方法は? 私はこの方法を試しましたが、エラー

function pass(xxx:String,yyy:String,zzz:String)
{
    //trace(xxx,yyy,zzz);
    if (this[xxx].hitTestObject(this[yyy])) //an original if (obj1.hitTestObject(obj2))
    {
       trace("right");
    }
    else
    {
      trace("fail");
    }
}

「this[]」は機能しません。TypeError: エラー #1010: 用語が定義されておらず、プロパティがありません。「this[]」は、「if」の外にある場合に機能します。この問題の他の方法はありますか? 前にありがとう

4

2 に答える 2

0

オブジェクト名を文字列として指定する特別な理由がない限り、引数の型を次のように変更することをお勧めしますDisplayObject

function pass(a:DisplayObject, b:DisplayObject):void
{
    if(a.hitTestObject(b))
    {
        trace("right");
    }
    else
    {
        trace("fail");
    }
}

文字列を使用する必要がある場合は、次のようにします。

var obj1:DisplayObject = getChildByName("obj1");
var obj2:DisplayObject= getChildByName("obj2");

pass(obj1, obj2);
于 2013-05-03T07:09:48.763 に答える
0

MC の名前を転送する場合は を使用する必要getChildByName()がありますが、その名前が の直接の子であるかどうかを確認してくださいthis

function pass(xxx:String,yyy:String,zzz:String):void {
    var x=this.getChildByName(xxx);
    if (!x) return;
    var y=this.getChildByName(yyy);
    if (!y) return; // insert similar for zzz here
    if (x.hitTestObject(y))     {
        trace("right");
    }
    else
    {
        trace("fail");
    }
}

それ以外の場合は、関数が持つ入力を指定します。

于 2013-05-03T04:15:47.267 に答える