2013-05-03 67 views
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"); 
    } 
} 

「這個[]」是不行的,類型錯誤:錯誤#1010:一個術語是不確定的,沒有屬性。 「這個[]」可以工作,如果它在「如果」之外。 有沒有其他方式解決這個問題?謝謝

回答

0

如果您要傳輸MC的名稱,但應檢查該名稱是否爲this的直接子節點,則應使用getChildByName()

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"); 
    } 
} 

否則指定函數具有哪些輸入。

+0

感謝vesper,它的作品...:D – dikagaulzzz 2013-05-03 07:53:43

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); 
+0

感謝烈士......:D – dikagaulzzz 2013-05-03 07:55:16