if条件中的动态对象

时间:2013-05-03 03:05:11

标签: actionscript-3 flash

如果包含动态对象的条件如何?我试过这种方式,但错误

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:术语未定义且没有属性。 “如果它在”if“之外,”this []“可以工作。 这个问题还有其他办法吗?先谢谢

2 个答案:

答案 0 :(得分: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");
    }
}

否则指定该功能有哪些输入。

答案 1 :(得分: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);