2014-03-04 54 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

相关问题