2014-03-04 74 views
1

我目前正在將自己在AS2中的舊遊戲項目轉換爲AS3。有一個問題。在我的遊戲的AS2版本我用來檢查一個影片剪輯的影片剪輯子的財產,並使用它的一些計算,使用請求空對象的屬性值

if (mc1.mc2.prop == undefined){ 
    //do something 
} 

和遊戲中的MC1或MC2被刪除的somepoint期間。 但在AS3中這不再起作用,因爲在mc1或mc2被移除後我無法訪問該道具。

Anyhelp?謝謝。

回答

1

很難給出一個更簡潔的回答不知道你的遊戲實際上是如何工作的,但是這個功能將允許你檢查對象上存在的分層值:

function hasProp(target:Object, prop:String):Boolean 
{ 
    var tests:Array = prop.split('.'); 
    var test:* = target; 

    for each(var p:String in tests) 
    { 
     if(test.hasOwnProperty(p)) 
     { 
      test = test[p]; 
     } 
     else return false; 
    } 

    return true; 
} 

使用,如:

if(hasProp(mc1, "mc2.prop")) 
{ 
    // Property exists. 
} 
+0

如果mc2爲null,mc1.mc2.harOwnProperty(「prop」)會拋出錯誤嗎? – TommyX

+0

@TommyX如果左邊的任何斷言都是'false',AND語句會中止,所以不會。 – Marty

+0

謝謝。另外我想用一個函數來做檢查。無論如何檢查輸入是否類似mc1.mc2.mc3 ... mcn.prop,並檢查使用&&和hasOwnProperty並返回false時,道具是未定義的?無論層次結構中有多少個mcs。 – TommyX

相關問題