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

如果您要转移 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");
    }
}

否则指定 thje 函数有哪些输入。

于 2013-05-03T04:15:47.267 回答
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 回答