Почему видеоролик или любой другой подкомпонент становятся общедоступными при указании имени экземпляра?

#flash #actionscript-3

#flash #actionscript-3

Вопрос:

Допустим, я поместил видеоролик внутри видеоролика A_Mc (представляющего ClassA). Теперь, если я размещу другой видеоролик (без присвоения имен и убедившись, что автоматическое присвоение имен экземплярам отключено через flash IDE), все работает нормально. Но когда я указываю имя экземпляра, скажем, b_Mc , тогда оно ДОЛЖНО быть общедоступным.

Какова логика этой настройки. Почему при проектировании я не могу создать вложенный видеоролик, который является закрытым и недоступным для других?

Комментарии:

1. Если он находится в стеке отображения, он всегда общедоступен через getChildAt() .

Ответ №1:

У меня такое чувство, что это просто для простоты. Среда разработки Flash IDE предназначена для дизайнеров, поэтому это может привести к путанице, если вы начнете говорить о общедоступных и частных.

Я не могу придумать ни одной причины, по которой вам все равно нужна частная графика. Я не вижу ничего плохого в доступе ко всей дочерней графике.

Ответ №2:

В документации AS3 указано, что любые символы, размещенные на сцене, являются общедоступными. Причина этого в том, что нет способа объявить экземпляр сцены как общедоступный или закрытый из временной шкалы IDE. Поэтому единственный случай, который допускает публичный или частный доступ, — это использовать public . Конечно, есть проблемы со всеми участниками you stage, которые являются общедоступными.

Но с точки зрения Adobe — они пытаются сделать Flash IDE дружественным для пользователей, ориентированных на дизайн и анимацию, которым незнакома идея общедоступных и закрытых элементов. Таким образом, они не предоставляют поле, позволяющее указать имя символа элемента как частное.

Но хорошим обходным путем является экспорт графики в виде класса без реализации, только общедоступные экземпляры. Затем добавьте это в свой класс реализации в качестве частной переменной. Затем добавьте его на этап класса реализации, если этот класс является отображаемым объектом. Если вы здесь, в StackOverflow, я думаю, вы справитесь с задачей 😉

Ответ №3:

Проигрыватель Flash не может поместить ваш экземпляр в переменную, на которую указывает имя экземпляра, если оно не является общедоступным. Подробнее об этом читайте в http://www.developria.com/2010/04/combining-the-timeline-with-oo.html