Свойство parent у экранных объектов в ActionScript

У экранных объектов на сцене flash-роликов и в ActionScript 2.0, и в ActionScript 3.0 имеется свойство parent (в ActionScript 2.0 это свойство пишется как "_parent"). Свойство parent позволяет обратиться к "родителю" (отсюда и название свойства). Родителем будет тот объект, который стоит на уровень выше в иерархии экранных объектов (про иерархию списка отображения в ActionScript 3.0 см. «Список отображения в ActionScript 3.0»).

Например, если в MovieClip под именем "mc1" (напомню, что имена мувиклипов в Macromedia/Adobe Flash можно задать через панель Свойств) вложен другой мувиклип под именем "mc2", то родителем для мувика "mc2" будет мувиклип "mc1". Возможно, звучит немного запутанно, но ничего сложного тут нет. Давайте рассмотрим это на наглядном примере.

Пусть у нас на сцене флеш-ролика будет мувиклип с именем "mc1". В этот мувик мы вложим ещё один мувиклип, но уже под именем "mc2". А в MovieClip "mc2" поместим ещё один мувик под именем "mc3". Получилась "матрёшка": в "mc1" вложен "mc2", а в "mc2" вложен "mc3". На рабочем столе редактора Adobe Flash это выглядит следующим образом:

Свойство parent в ActionScript

Для большей наглядности все мувиклипы подписаны своими именами.

А теперь давайте узнаем, кто является "родителем" для мувиклипа "mc3". Делается это невероятно просто...

ActionScript 2.0:

trace(mc1.mc2.mc3._parent._name)

или

ActionScript 3.0:

trace(mc1.mc2.mc3.parent.name)

Фактически, мы спросили у мувиклипа mc3 следующее: "Какое имя (name) у твоего родителя (parent)?". И он нам честно ответил, что его родителя зовут "mc2".

В приведённом ниже флеш-ролике кликните по любому из трёх мувиклипов и в текстовом поле будет выведено имя родительского элемента:

Но через свойство parent можно обращаться не только к "родителю", но и к "родителю родителя". Давайте, для примера, узнаем, как зовут "дедушку" мувиклипа "mc3":

ActionScript 2.0:

trace(mc1.mc2.mc3._parent._parent._name)

или

ActionScript 3.0:

trace(mc1.mc2.mc3.parent.parent.name)

Оба варианта вернут одно и тоже имя - "mc1". Можно узнать, кто приходится "дедушкой" и для других мувиклипов:

Подобным образом можно обратиться и к "прадедушке" (объект.parent.parent.parent), и к "прапрадедушке" (объект.parent.parent.parent.parent), и так далее. Впрочем, такая практика считается "дурным тоном" и, как правило, свидетельствует об ошибках, допущенных на этапе проектирования флеш-приложения.

Важно заметить, что свойство parent доступно только для чтения. Попытка записать новое значение в свойство parent приведёт к ошибке:

ReferenceError: Error #1074: Недопустимая запись в свойство 'только на чтение' parent в flash.display.MovieClip.

Спасибо за внимание...

Автор: admin

Дата добавления: 2012-04-12

Просмотров: 6860

Рейтинг поста: +9-

Правила перепечатки

Социальные закладки:
Комментарии:
Комментатор
Комментарий добавил(а): Abral
Дата добавления: 2013-10-24
Возможен Обход последнего ограничения parent.
Для изменения или создания переменной в родительский уровень требуется обратиться через MovieClip или же через Object
var N:Number=null //Объявляем переменную N
MovieClip(parent).N=10 // Создаем переменную N в родительском уровне
trace(MovieClip(parent).N)
Комментатор
Комментарий добавил(а): Максим
Дата добавления: 2012-04-14
Спасибо, очень помогло
Добавить комментарий:







[ + ] помощь по форматирование текста

Идиот-тест

Если все обязательные поля (отмечены * ) заполнены необходимой информацией, то нажимаем кнопку Добавить комментарий.

Меню
Подписка
Рубрики
Метки
Последние комментарии
Рейтинг постов
Реклама
Друзья
География гостей
Статистика
Яндекс.Метрика