Почему этот код выбрасывает ReferenceError #1069?

Первая строка этого кода выдает ReferenceError #1069. Msgstr "Свойство focusMask не найдено в ObjectButtonSkin и значение по умолчанию отсутствует." Переменная skin имеет тип MovieClip, а фактический экземпляр объекта имеет тип ObjectButtonSkin (который расширяет MovieClip).

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

Это никогда не было проблемой раньше, поэтому я не уверен, почему это происходит. Класс ObjectButtonSkin не помечен как динамический или что-либо еще, так что, возможно, в этом проблема? Один сайт предложил мне использовать "()" вместо "[]" для доступа к свойству, но это не так.

1 ответ

Решение

Лучшая проверка на наличие focusMask была бы:

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

Или, если вы хотите быть чище, вы должны извлечь focusMask в переменную:

var focusMask:DisplayObject = skin.getChildByName("focusMask");
if (focusMask)
    focusMask.visible = false;
Другие вопросы по тегам