为什么这段代码抛出了ReferenceError#1069?

时间:2011-02-15 17:36:26

标签: flash actionscript-3 indexed-properties referenceerror

此代码的第一行是抛出ReferenceError#1069。 “在ObjectButtonSkin上找不到属性focusMask,并且没有默认值。” “skin”变量的类型为MovieClip,实际的对象实例的类型为ObjectButtonSkin(扩展了MovieClip)。

if (skin["focusMask"] != null)
    if (skin["focusMask"] is DisplayObject)
        (skin["focusMask"] as DisplayObject).visible = false;

之前从来没有这个问题,所以我不确定为什么会这样。 ObjectButtonSkin类没有标记为动态或其他任何东西,所以也许这就是问题所在?一个网站建议我应该使用“()”而不是“[]”来访问该属性,但这似乎不正确。

1 个答案:

答案 0 :(得分:1)

更好地检查focusMask的存在将是:

if (skin.hasOwnProperty("focusMask") && skin.focusMask!=null)...

或者,如果你想变得更干净,你应该将focusMask提取到一个变量:

var focusMask:DisplayObject = skin.getChildByName("focusMask");
if (focusMask)
    focusMask.visible = false;