Главная / Action Script 3
Пакетflash.display
Классpublic class DisplayObjectContainer
НаследованиеDisplayObjectContainer Inheritance InteractiveObject Inheritance DisplayObject Inheritance EventDispatcher Inheritance Object
Подклассы Loader, Sprite, Stage, TextLine

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Класс DisplayObjectContainer является базовым классом для всех объектов, которые могут быть контейнерами для экранных объектов в списке отображения. Список отображения управляет всеми объектами, отображаемыми в проигрывателе Flash Player. Используйте класс DisplayObjectContainer, чтобы упорядочить экранные объекты в списке отображения. Каждый объект DisplayObjectContainer имеет собственный список потомков для построения z-последовательности объектов. Z-последовательность — это порядок с переднего на задний план, определяющий то, какой объект будет нарисован на переднем плане, какой за ним и т.д.

DisplayObject — это абстрактный базовый класс, поэтому DisplayObject нельзя вызывать непосредственно. При вызове new DisplayObject() выдается исключение ArgumentError.

Класс DisplayObjectContainer — это абстрактный базовый класс для всех объектов, содержащих дочерние объекты. Он не поддерживает непосредственное создание экземпляров. При вызове конструктора new DisplayObjectContainer() выдается исключение ArgumentError.

Дополнительные сведения см. в главе "Программирование экрана" книги Программирование на ActionScript 3.0.

Посмотреть примеры

См. также

flash.display.DisplayObject
Основные классы показа
Работа с экранными объектами
Работа с контейнерами экранных объектов


Общедоступные свойства
 СвойствоОпределено
 InheritedaccessibilityProperties : AccessibilityProperties
Текущие параметры специальных возможностей для данного экранного объекта.
DisplayObject
 Inheritedalpha : Number
Указывает значение альфа-прозрачности заданного объекта.
DisplayObject
 InheritedblendMode : String
Значение класса BlendMode, задающее режим наложения.
DisplayObject
 InheritedblendShader : Shader
[только для записи] Задает затенение, используемое при наложении переднего плана на фон.
DisplayObject
 InheritedcacheAsBitmap : Boolean
При значении true проигрыватель Flash Player кэширует внутреннее растровое представление экранного объекта.
DisplayObject
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 InheritedcontextMenu : ContextMenu
Определяет контекстное меню, связанное с данным объектом.
InteractiveObject
 InheriteddoubleClickEnabled : Boolean
Определяет, получает ли объект события doubleClick.
InteractiveObject
 Inheritedfilters : Array
Индексированный массив, который содержит все объекты filter, связанные в настоящий момент с экранным объектом.
DisplayObject
 InheritedfocusRect : Object
Задает отображение прямоугольной рамки индикатора фокуса для данного объекта.
InteractiveObject
 Inheritedheight : Number
Указывает высоту экранного объекта в пикселах.
DisplayObject
 InheritedloaderInfo : LoaderInfo
[только для чтения] Возвращает объект LoaderInfo, содержащий сведения о загрузке файла, к которому принадлежит этот экранный объект.
DisplayObject
 Inheritedmask : DisplayObject
Вызывающий экранный объект маскируется заданным объектом mask.
DisplayObject
  mouseChildren : Boolean
Определяет, включен ли переход между потомками объекта с помощью мыши.
DisplayObjectContainer
 InheritedmouseEnabled : Boolean
Определяет, получает ли этот объект сообщения мыши.
InteractiveObject
 InheritedmouseX : Number
[только для чтения] Указывает координату x положения курсора мыши (в пикселах).
DisplayObject
 InheritedmouseY : Number
[только для чтения] Указывает координату y положения курсора мыши (в пикселах).
DisplayObject
 Inheritedname : String
Указывает имя экземпляра DisplayObject.
DisplayObject
  numChildren : int
[только для чтения] Возвращает число потомков данного объекта.
DisplayObjectContainer
 InheritedopaqueBackground : Object
Определяет, является ли экранный объект непрозрачным с определенным цветом фона.
DisplayObject
 Inheritedparent : DisplayObjectContainer
[только для чтения] Указывает объект DisplayObjectContainer, содержащий данный экранный объект.
DisplayObject
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
 Inheritedroot : DisplayObject
[только для чтения] В случае с экранным объектом в загруженном SWF-файле свойством root является самый верхний экранный объект в части структуры дерева списка отображения, представленной этим SWF-файлом.
DisplayObject
 Inheritedrotation : Number
Указывает поворот экземпляра DisplayObject относительно его исходной ориентации (в градусах).
DisplayObject
 InheritedrotationX : Number
Обозначает поворот в градусах по оси x экземпляра DisplayObject относительно исходной ориентации по трехмерному родительскому контейнеру.
DisplayObject
 InheritedrotationY : Number
Обозначает поворот в градусах по оси у экземпляра DisplayObject относительно исходной ориентации по трехмерному родительскому контейнеру.
DisplayObject
 InheritedrotationZ : Number
Обозначает поворот в градусах по оси z экземпляра DisplayObject относительно исходной ориентации по трехмерному родительскому контейнеру.
DisplayObject
 Inheritedscale9Grid : Rectangle
Текущая активная сетка масштабирования.
DisplayObject
 InheritedscaleX : Number
Указывает горизонтальное масштабирование объекта от точки регистрации (в процентах).
DisplayObject
 InheritedscaleY : Number
Указывает вертикальное масштабирование объекта от точки регистрации (в процентах).
DisplayObject
 InheritedscaleZ : Number
Указывает масштабирование глубины объекта (в процентах) относительно точки регистрации этого объекта.
DisplayObject
 InheritedscrollRect : Rectangle
Прямоугольная область прокрутки экранного объекта.
DisplayObject
 Inheritedstage : Stage
[только для чтения] Класс Stage экранного объекта.
DisplayObject
  tabChildren : Boolean
Определяет, включен ли переход между потомками объекта с помощью клавиши Tab.
DisplayObjectContainer
 InheritedtabEnabled : Boolean
Определяет, включен ли этот объект в последовательность перехода с помощью клавиши Tab.
InteractiveObject
 InheritedtabIndex : int
Задает последовательность перехода между объектами в SWF-файле.
InteractiveObject
  textSnapshot : TextSnapshot
[только для чтения] Возвращает объект TextSnapshot для данного экземпляра DisplayObjectContainer.
DisplayObjectContainer
 Inheritedtransform : Transform
Объект со свойствами, относящимися к матрице, преобразованию цвета и пиксельным границам экранного объекта.
DisplayObject
 Inheritedvisible : Boolean
Определяет видимость экранного объекта.
DisplayObject
 Inheritedwidth : Number
Указывает ширину экранного объекта в пикселах.
DisplayObject
 Inheritedx : Number
Указывает координату x экземпляра DisplayObject, связанную с локальными координатами родительского DisplayObjectContainer.
DisplayObject
 Inheritedy : Number
Указывает координату y экземпляра DisplayObject, связанную с локальными координатами родительского DisplayObjectContainer.
DisplayObject
 Inheritedz : Number
Указывает положение по оси z экземпляра DisplayObject относительно трехмерного родительского контейнера.
DisplayObject
Общедоступные методы
 МетодОпределено
  
При вызове new DisplayObjectContainer() конструктор выдает исключение ArgumentError.
DisplayObjectContainer
  
Добавляет дочерний экземпляр DisplayObject к данному экземпляру DisplayObjectContainer.
DisplayObjectContainer
  
Добавляет дочерний экземпляр DisplayObject к данному экземпляру DisplayObjectContainer.
DisplayObjectContainer
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события в объекте EventDispatcher, в результате чего прослушиватель будет получать уведомления о событиях.
EventDispatcher
  
Показывает, могут ли ограничения безопасности привести к пропуску каких-либо экранных объектов в списке, возвращаемом в результате вызова метода DisplayObjectContainer.getObjectsUnderPoint() с заданной точкой.
DisplayObjectContainer
  
Определяет, является ли заданный экранный объект дочерним объектом экземпляра DisplayObjectContainer или самим экземпляром.
DisplayObjectContainer
 Inherited
Передает событие в поток событий.
EventDispatcher
 Inherited
getBounds(targetCoordinateSpace:DisplayObject):Rectangle
Возвращает прямоугольник, определяющий область экранного объекта, которая относится к системе координат объекта targetCoordinateSpace.
DisplayObject
  
Возвращает экземпляр дочернего экранного объекта, существующий в заданной позиции индекса.
DisplayObjectContainer
  
Возвращает экземпляр дочернего экранного объекта с заданным именем.
DisplayObjectContainer
  
Возвращает позицию индекса для дочернего экземпляра DisplayObject.
DisplayObjectContainer
  
Возвращает массив объектов, расположенных ниже заданной позиции и являющихся дочерними объектами любого уровня для данного экземпляра DisplayObjectContainer.
DisplayObjectContainer
 Inherited
getRect(targetCoordinateSpace:DisplayObject):Rectangle
Возвращает прямоугольник, определяющий границу экранного объекта по системе координат, заданной параметром targetCoordinateSpace, за исключением линий фигур.
DisplayObject
 Inherited
Преобразует объект Point из координат рабочей области (глобальных) в координаты экранного объекта (локальные).
DisplayObject
 Inherited
Преобразует двумерный объект Point из координат рабочей области (глобальных) в координаты экранного трехмерного объекта (локальные).
DisplayObject
 Inherited
Проверяет наличие у объекта EventDispatcher прослушивателей событий, которые зарегистрированы для получения уведомлений о событиях определенного типа.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Оценивает экранный объект, чтобы определить, перекрывает ли он экранный объект obj или пересекается с ним.
DisplayObject
 Inherited
hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
Вычисляет экранный объект, чтобы определить, перекрывает ли он точку, заданную координатами x и y, или пересекает ее.
DisplayObject
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Преобразует трехмерный объект point из координат трехмерного экранного объекта (локальных) в двухмерный объект point с координатами рабочей области (глобальными).
DisplayObject
 Inherited
Преобразует объект point из координат экранного объекта (локальных) в координаты рабочей области (глобальные).
DisplayObject
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
  
Удаляет заданный дочерний объект DisplayObject из списка потомков экземпляра DisplayObjectContainer.
DisplayObjectContainer
  
Удаляет дочерний DisplayObject из заданной позиции индекса в списке потомков DisplayObjectContainer.
DisplayObjectContainer
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
  
Изменяет положение существующего потомка в DisplayObjectContainer.
DisplayObjectContainer
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
Меняет местами (в порядке "от начала к концу") два заданных дочерних объекта.
DisplayObjectContainer
  
swapChildrenAt(index1:int, index2:int):void
Меняет местами (в порядке "от начала к концу") дочерние объекты, расположенные в двух заданных позициях индекса в списке потомков.
DisplayObjectContainer
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
 Inherited
Проверяет, зарегистрирован ли прослушиватель событий в объекте EventDispatcher или в любом из его предков для получения уведомлений о событиях определенного типа.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player перемещается в фокус операционной системы и становится активным.EventDispatcher
 InheritedОтправляется, когда экранный объект добавляется в список отображения.DisplayObject
 InheritedОтправляется, когда экранный объект добавляется к списку отображения в рабочей области, либо непосредственно, либо путем добавления поддерева, содержащего экранный объект.DisplayObject
 InheritedОтправляется, когда пользователь выбирает команду "Удалить" в контекстном меню текста.InteractiveObject
 InheritedОтправляется, когда пользователь нажимает и отпускает главную кнопку на указывающем устройстве над одним и тем же объектом InteractiveObject.InteractiveObject
 InheritedОтправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции "Копировать", или выбирает команду "Копировать" из контекстного меню.InteractiveObject
 InheritedОтправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции "Вырезать", или выбирает команду "Вырезать" из контекстного меню.InteractiveObject
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player покидает фокус операционной системы и становится неактивным.EventDispatcher
 InheritedОтправляется, когда пользователь дважды нажимает и отпускает главную кнопку на указывающем устройстве над одним и тем же объектом InteractiveObject, а флаг doubleClickEnabled для этого объекта имеет значение true.InteractiveObject
 Inherited[многоадресное событие] Отправляется, когда точка воспроизведения переходит в новый кадр.DisplayObject
 Inherited[многоадресное событие] Отправляется, когда точка воспроизведения покидает текущий кадр.DisplayObject
 InheritedОтправляется, когда экранный объект перемещается в фокус.InteractiveObject
 InheritedОтправляется, когда экранный объект покидает фокус.InteractiveObject
 Inherited[многоадресное событие] Отправляется после завершения работы конструкторов экранных объектов кадра до выполнения сценариев кадра.DisplayObject
 InheritedОтправляется, когда пользователь нажимает клавишу.InteractiveObject
 InheritedОтправляется, когда пользователь пытается изменить фокус с помощью клавиатуры.InteractiveObject
 InheritedОтправляется, когда пользователь отпускает клавишу.InteractiveObject
 InheritedОтправляется, когда пользователь нажимает кнопку на указывающем устройстве над экземпляром InteractiveObject в окне проигрывателя Flash Player.InteractiveObject
 InheritedОтправляется, когда пользователь пытается изменить фокус с помощью указывающего устройства.InteractiveObject
 InheritedОтправляется, когда пользователь перемещает указывающее устройство в момент, когда курсор находится над объектом InteractiveObject.InteractiveObject
 InheritedОтправляется, когда пользователь перемещает указывающее устройство от экземпляра InteractiveObject.InteractiveObject
 InheritedОтправляется, когда пользователь наводит указывающее устройству на экземпляр InteractiveObject в окне проигрывателя Flash Player.InteractiveObject
 InheritedОтправляется, когда пользователь отпускает кнопку на указывающем устройстве над экземпляром InteractiveObject в окне проигрывателя Flash Player.InteractiveObject
 InheritedОтправляется, когда пользователь вращает колесико мыши над экземпляром InteractiveObject в окне проигрывателя Flash Player.InteractiveObject
 InheritedОтправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции "Вставить", или выбирает команду "Вставить" из контекстного меню.InteractiveObject
 InheritedОтправляется перед удалением экранного объекта из списка отображения.DisplayObject
 InheritedОтправляется перед удалением экранного объекта из списка отображения, либо непосредственно, либо путем удаления поддерева, содержащего экранный объект.DisplayObject
 Inherited[многоадресное событие] Отправляется перед обновлением и визуализацией списка отображения.DisplayObject
 InheritedОтправляется, когда пользователь перемещает указывающее устройство от экземпляра InteractiveObject.InteractiveObject
 InheritedОтправляется, когда пользователь наводит указывающее устройство на экземпляр InteractiveObject.InteractiveObject
 InheritedОтправляется, когда пользователь активирует комбинацию клавиш ускорения, используемую на данной платформе для операции "Выделить все", или выбирает команду "Выделить все" из контекстного меню.InteractiveObject
 InheritedОтправляется, когда изменяется значение свойства tabChildren объекта.InteractiveObject
 InheritedОтправляется при изменении флага tabEnabled объекта.InteractiveObject
 InheritedОтправляется, когда изменяется значение свойства tabIndex объекта.InteractiveObject
Сведения о свойстве
mouseChildrenсвойство
mouseChildren:Boolean  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Определяет, включен ли переход между потомками объекта с помощью мыши. Если объект реагирует на мышь, пользователь может взаимодействовать с ним с помощью мыши. Значение по умолчанию — true.

Это свойство удобно использовать, когда кнопка создается с помощью экземпляра класса Sprite (а не класса SimpleButton). Когда для создания кнопки используется экземпляр Sprite, при желании можно украсить кнопку с помощью метода addChild(), добавив дополнительные экземпляры Sprite. Этот процесс может вызывать непредвиденное поведение событий мыши, так как целевым объектом события мыши вместо родительского экземпляра могут стать экземпляры Sprite, добавленные в качестве потомков. Чтобы родительский экземпляр гарантированно быть целевым объектом событий мыши, можно задать его свойству mouseChildren значение false.

При настройке данного свойства события не отправляются. Чтобы создать интерактивные функции, необходимо использовать метод addEventListener().



Реализация
    public function get mouseChildren():Boolean
    public function set mouseChildren(value:Boolean):void

См. также


Пример
В следующем примере настраивается объект Sprite object (тип контейнера экранных объектов) с именем container и показывается, что когда свойству mouseChildren задается значение false, целью события mouseClick является объект container, а не его потомки.
import flash.display.Sprite;
import flash.events.MouseEvent;

var container:Sprite = new Sprite();
container.name = "container";
addChild(container);

var circle:Sprite = new Sprite();
circle.name = "circle";
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(40, 40, 40);

container.addChild(circle);

container.mouseChildren = false;

container.addEventListener(MouseEvent.CLICK, clicked);

function clicked(event:MouseEvent):void {
    trace(event.target.name); // container
}
numChildrenсвойство 
numChildren:int  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает число потомков данного объекта.



Реализация
    public function get numChildren():int

См. также


Пример
В следующем примере настраиваются два объекта Sprite с именами container1 и container2. Спрайт — это тип контейнера экранных объектов. В примере вызывается метод addChild() для создания иерархии отображения: container1 является потомком container2, а два других экранных объекта, circle1 и circle2, являются потомками container1. При вызове метода trace() показывается число потомков каждого объекта. Обратите внимание, что потомки потомков не включены в счетчик numChildren.
import flash.display.Sprite;

var container1:Sprite = new Sprite();
var container2:Sprite = new Sprite();

var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xFFCC00);
circle1.graphics.drawCircle(40, 40, 40);

var circle2:Sprite = new Sprite();
circle2.graphics.beginFill(0x00CCFF);
circle2.graphics.drawCircle(80, 40, 40);

container2.addChild(container1);
container1.addChild(circle1);
container1.addChild(circle2);

trace(container1.numChildren); // 2
trace(container2.numChildren); // 1
trace(circle1.numChildren); // 0
trace(circle2.numChildren); // 0
tabChildrenсвойство 
tabChildren:Boolean  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Определяет, включен ли переход между потомками объекта с помощью клавиши Tab. Включает или отключает переход между потомками объекта с помощью клавиши Tab. Значение по умолчанию — true.



Реализация
    public function get tabChildren():Boolean
    public function set tabChildren(value:Boolean):void

Выдает
IllegalOperationError — При вызове данного свойства объекта Stage выдается исключение. Объект Stage не реализует это свойство.

Пример
В следующем примере создается контейнер экранных объектов container1 и в его список отображения добавляется два экранных объекта: circle1 и circle2. В этом примере для tabChildren потомков задается значение false, чтобы последовательностью перехода с помощью клавиши Tab можно было управлять с помощью tabIndex.
import flash.display.Sprite;

var container:Sprite = new Sprite();
container.tabChildren = false;

var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xFFCC00);
circle1.graphics.drawCircle(40, 40, 40);
circle1.tabIndex = 1;

var circle2:Sprite = new Sprite();
circle2.graphics.beginFill(0x00CCFF);
circle2.graphics.drawCircle(120, 40, 40);
circle2.tabIndex = 0;

container.addChild(circle1);
container.addChild(circle2);
Чтобы просмотреть результаты данного примера, файл нужно скомпилировать и запустить. Щелкнув один из кругов, можно нажать клавишу TAB, чтобы перевести фокус на другой экранный объект (выделенный желтым прямоугольником).
textSnapshotсвойство 
textSnapshot:TextSnapshot  [только для чтения]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает объект TextSnapshot для данного экземпляра DisplayObjectContainer.



Реализация
    public function get textSnapshot():TextSnapshot

См. также


Пример
Следующий пример поддерживается только в среде разработки Flash. Flex не имеет возможностей добавления статического текста в файл. Чтобы соответствующим образом подготовить файл Flash, нужно добавить одно или несколько текстовых полей в первый кадр ролика. Затем вставьте следующий сценарий в первый кадр и запустите файл. Будет выведен добавленный вами статический текст.
trace(this.textSnapshot.getText(0, this.textSnapshot.charCount));
Сведения о конструкторе
DisplayObjectContainer()Конструктор
public function DisplayObjectContainer()

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

При вызове нового DisplayObjectContainer() конструктор выдает исключение ArgumentError. Однако можно вызывать конструкторы для следующих подклассов DisplayObjectContainer:

Сведения о методе
addChild()метод
public function addChild(child:DisplayObject):DisplayObject

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Добавляет дочерний экземпляр DisplayObject к данному экземпляру DisplayObjectContainer. Потомок добавляется перед (сверху) всех остальных потомков в данном экземпляре DisplayObjectContainer. (Чтобы добавить потомка в конкретную позицию в индексе, используйте метод addChildAt().)

Если добавляется объект, предком которого уже является другой контейнер экранных объектов, то он удаляется из списка потомков старого контейнера.

Параметры

child:DisplayObject — Экземпляр DisplayObject для добавления в качестве потомка данного экземпляра DisplayObjectContainer.

Возвращает
DisplayObject — Экземпляр DisplayObject, передаваемый в параметре child.

События
added:Event — Отправляется, когда экранный объект добавляется в список отображения.

Выдает
ArgumentError — Исключение выдается, если потомок тот же, что и предок. Также выдается исключение, если вызывающий объект является потомком (или потомком потомка и т.д.) добавляемого потомка.

См. также


Пример

В следующем примере настраиваются два объекта Sprite с именами container1 и container2. Спрайт — это тип контейнера экранных объектов. В примере вызывается метод addChild() для создания иерархии отображения: container1 является потомком container2, а два других экранных объекта, circle1 и circle2, являются потомками container1. При вызове метода trace() показывается число потомков каждого объекта. Обратите внимание, что потомки потомков не включены в счетчик numChildren.
import flash.display.Sprite;

var container1:Sprite = new Sprite();
var container2:Sprite = new Sprite();

var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xFFCC00);
circle1.graphics.drawCircle(40, 40, 40);

var circle2:Sprite = new Sprite();
circle2.graphics.beginFill(0x00CCFF);
circle2.graphics.drawCircle(80, 40, 40);

container2.addChild(container1);
container1.addChild(circle1);
container1.addChild(circle2);

trace(container1.numChildren); // 2
trace(container2.numChildren); // 1
trace(circle1.numChildren); // 0
trace(circle2.numChildren); // 0
addChildAt()метод 
public function addChildAt(child:DisplayObject, index:int):DisplayObject

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Добавляет дочерний экземпляр DisplayObject к данному экземпляру DisplayObjectContainer. Потомок добавляется в указанной позиции индекса. Индекс 0 обозначает конец списка отображения для данного объекта DisplayObjectContainer.

Так, в следующем примере показано три разных объекта с именами a, b и c в позициях индекса 0, 2 и 1 соответственно.

b над c над a

Если добавляется объект, предком которого уже является другой контейнер экранных объектов, то он удаляется из списка потомков старого контейнера.

Параметры

child:DisplayObject — Экземпляр DisplayObject для добавления в качестве потомка данного экземпляра DisplayObjectContainer.
 
index:int — Позиция индекса, в которую добавляется дочерний объект. Если указать занятую на данный момент позицию индекса, дочерний объект, существующий на этой и на этой позиции, и все выше расположенные позиции перемещаются на одну позицию вверх в списке потомков.

Возвращает
DisplayObject — Экземпляр DisplayObject, передаваемый в параметре child.

События
added:Event — Отправляется, когда экранный объект добавляется в список отображения.

Выдает
RangeError — Исключение выдается, если позиция в индексе не существует в списке потомков.
 
ArgumentError — Исключение выдается, если потомок тот же, что и предок. Также выдается исключение, если вызывающий объект является потомком (или потомком потомка и т.д.) добавляемого потомка.

См. также


Пример

В следующем примере создается контейнер экранных объектов container и в его список отображения добавляется экранный объект circle1. Затем посредством вызова container.addChildAt(circle2, 0) добавляется объект circle2 в позицию индекса 0 (задний план) и перемещает объект circle1 в позицию индекса 1.
import flash.display.Sprite;

var container:Sprite = new Sprite();

var circle1:Sprite = new Sprite();
var circle2:Sprite = new Sprite();

container.addChild(circle1);
container.addChildAt(circle2, 0);

trace(container.getChildAt(0) == circle2); // true
trace(container.getChildAt(1) == circle1); // true
areInaccessibleObjectsUnderPoint()метод 
public function areInaccessibleObjectsUnderPoint(point:Point):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Показывает, могут ли ограничения безопасности привести к пропуску каких-либо экранных объектов в списке, возвращаемом в результате вызова метода DisplayObjectContainer.getObjectsUnderPoint() с заданной точкой point. По умолчанию содержимое из одного домена не может обращаться к объектам из другого домена, если это не разрешено с использованием метода Security.allowDomain().

Дополнительные сведения см. в следующих источниках.

Параметр point находится в координатной плоскости рабочей области, которая может отличаться от координатной плоскости контейнера экранных объектов (если это не рабочая область). Можно использовать методы globalToLocal() и localToGlobal() для преобразования точек между этими координатными плоскостями.

Параметры

point:Point — Точка, под которой следует искать.

Возвращает
Boolean — Значение true, если точка содержит дочерние экранные объекты с ограничениями по безопасности.

См. также


Пример

Следующий код создает контейнер экранных объектов container. В следующем блоке кода используется объект Loader для загрузки файла JPEG с именем "test.jpg" с удаленного файлового сервера. Обратите внимание, что свойство checkPolicyFile объекта LoaderContext, использованного в качестве параметра в методе load(), имеет значение false. По завершении загрузки файла код вызывает метод loaded(), который в свою очередь вызывает метод container.areInaccessibleObjectsUnderPoint(), возвращающий значение true, так как загруженное содержание находится на недоступном домене.
import flash.display.Sprite;
import flash.display.Loader;
import flash.system.LoaderContext;
import flash.net.URLRequest;
import flash.events.Event;
import flash.geom.Point;

var container:Sprite = new Sprite();

var urlReq:URLRequest = new URLRequest("http://localhost/RemoteFile.swf");
var ldr:Loader = new Loader();
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = false;
ldr.load(urlReq, context);

ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, urlNotFound);

function loaded(event:Event):void {
    var pt:Point = new Point(1, 1);
    trace(container.areInaccessibleObjectsUnderPoint(pt)); // true
}

function urlNotFound(event:Event):void {
    trace("The URL was not found."); 
}
В данном примере предполагается, что SWF-файл, созданный этим кодом, загружается не с того домена, что JPEG-файл, и что загруженный JPEG-файл занимает точку с координатами (1, 1).
contains()метод 
public function contains(child:DisplayObject):Boolean

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Определяет, является ли заданный экранный объект дочерним объектом экземпляра DisplayObjectContainer или самим экземпляром. Область поиска охватывает весь список отображения, включая данный экземпляр DisplayObjectContainer. Внучатые потомки, их потомки и т.д. возвращают значение true.

Параметры

child:DisplayObject — Тестируемый дочерний объект.

Возвращает
Boolean — Значение true, если объект child является потомком объекта DisplayObjectContainer или самого контейнера, в противном случае значение false.

Пример

В следующем примере настраивается ряд объектов Sprite, одни из которых добавляются в списки потомков других. (Объект Sprite — это тип контейнера экранных объектов.) Отношения между различными объектами можно проследить, вызвав метод contains().
import flash.display.Sprite;

var sprite1:Sprite = new Sprite();
var sprite2:Sprite = new Sprite();
var sprite3:Sprite = new Sprite();
var sprite4:Sprite = new Sprite();

sprite1.addChild(sprite2);
sprite2.addChild(sprite3);

trace(sprite1.contains(sprite1)); // true
trace(sprite1.contains(sprite2)); // true
trace(sprite1.contains(sprite3)); // true
trace(sprite1.contains(sprite4)); // false
getChildAt()метод 
public function getChildAt(index:int):DisplayObject

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает экземпляр дочернего экранного объекта, существующий в заданной позиции индекса.

Параметры

index:int — Позиция индекса дочернего объекта.

Возвращает
DisplayObject — Дочерний экранный объект в заданной позиции индекса.

Выдает
RangeError — Исключение выдается, если индекс не существует в списке потомков.
 
SecurityError — Данный дочерний объект отображения принадлежит изолированной программной среде, к которой нет доступа. Чтобы избежать такой ситуации, дочерний ролик должен вызвать метод Security.allowDomain().

См. также


Пример

В следующем примере создается контейнер экранных объектов с именем container, а затем добавляется три экранных объекта в список потомков объекта container. После вызова метода getChildAt() отображаются позиции дочерних объектов.
import flash.display.Sprite;

var container:Sprite = new Sprite();

var sprite1:Sprite = new Sprite();
var sprite2:Sprite = new Sprite();
var sprite3:Sprite = new Sprite();

container.addChild(sprite1);
container.addChild(sprite2);
container.addChildAt(sprite3, 0);

trace(container.getChildAt(0) == sprite3); // true
trace(container.getChildAt(1) == sprite1); // true
trace(container.getChildAt(2) == sprite2); // true
getChildByName()метод 
public function getChildByName(name:String):DisplayObject

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает экземпляр дочернего экранного объекта с заданным именем. Если заданное имя соответствует нескольким дочерним экранным объектам, метод возвращает тот, что идет первым в списке потомков.

Метод getChildAt() работает быстрее метода getChildByName(). Метод getChildAt() Обращается к потомку из кэшированного массива, а методу getChildByName() приходится искать потомка через связанный список.

Параметры

name:String — Имя искомого потомка.

Возвращает
DisplayObject — Дочерний экранный объект с заданным именем.

Выдает
SecurityError — Данный дочерний объект отображения принадлежит изолированной программной среде, к которой нет доступа. Чтобы избежать такой ситуации, дочерний ролик должен вызвать метод Security.allowDomain().

См. также


Пример

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляется два дочерних экранных объекта. Затем код вызывает методы getChildByName() и getChildIndex(), чтобы получить позицию индекса потомка объекта container с именем "sprite1".
import flash.display.Sprite;
import flash.display.DisplayObject;

var container:Sprite = new Sprite();

var sprite1:Sprite = new Sprite();
sprite1.name = "sprite1";
var sprite2:Sprite = new Sprite();
sprite2.name = "sprite2";

container.addChild(sprite1);
container.addChild(sprite2);

var target:DisplayObject = container.getChildByName("sprite1"); 
trace(container.getChildIndex(target)); // 0
getChildIndex()метод 
public function getChildIndex(child:DisplayObject):int

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает позицию индекса для дочернего экземпляра DisplayObject.

Параметры

child:DisplayObject — Искомый экземпляр DisplayObject.

Возвращает
int — Позиция индекса для искомого дочернего экранного объекта.

Выдает
ArgumentError — Выдается исключение, если дочерний параметр не является потомком данного объекта.

Пример

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляется два дочерних экранных объекта. Затем код вызывает методы getChildByName() и getChildIndex(), чтобы получить позицию индекса потомка объекта container с именем "sprite1".
import flash.display.Sprite;
import flash.display.DisplayObject;

var container:Sprite = new Sprite();

var sprite1:Sprite = new Sprite();
sprite1.name = "sprite1";
var sprite2:Sprite = new Sprite();
sprite2.name = "sprite2";

container.addChild(sprite1);
container.addChild(sprite2);

var target:DisplayObject = container.getChildByName("sprite1"); 
trace(container.getChildIndex(target)); // 0
getObjectsUnderPoint()метод 
public function getObjectsUnderPoint(point:Point):Array

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает массив объектов, расположенных ниже заданной позиции и являющихся дочерними объектами любого уровня для данного экземпляра DisplayObjectContainer. Дочерние объекты, недоступные по соображениям безопасности, опускаются из возвращенного массива. Чтобы определить, затрагивается ли возвращенный массив ограничением с целью обеспечения безопасности, вызовите метод areInaccessibleObjectsUnderPoint().

Параметр point находится в координатной плоскости рабочей области, которая может отличаться от координатной плоскости контейнера экранных объектов (если это не рабочая область). Можно использовать методы globalToLocal() и localToGlobal() для преобразования точек между этими координатными плоскостями.

Параметры

point:Point — Точка, под которой следует искать.

Возвращает
Array — Массив объектов, расположенных ниже заданной позиции и являющихся дочерними объектами любого уровня для данного экземпляра DisplayObjectContainer.

См. также


Пример

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляется два пересекающихся дочерних экранных объекта. Затем код дважды вызывает метод getObjectsUnderPoint(): один раз с использованием точки, касающейся только одного объекта, а затем с использованием точки, в которой объекты пересекаются. Свойство length возвращенного массива показывает количество объектов контейнера в каждой точке.
import flash.display.Sprite;
import flash.geom.Point;

var container:Sprite = new Sprite();

var square1:Sprite = new Sprite();
square1.graphics.beginFill(0xFFCC00);
square1.graphics.drawRect(0, 0, 40, 40);

var square2:Sprite = new Sprite();
square2.graphics.beginFill(0x00CCFF);
square2.graphics.drawRect(20, 0, 30, 40);

container.addChild(square1);
container.addChild(square2);

var pt:Point = new Point(10, 20);
var objects:Array = container.getObjectsUnderPoint(pt); 
trace(objects.length); // 1

pt = new Point(35, 20);
objects = container.getObjectsUnderPoint(pt);
trace(objects.length);  // 2
removeChild()метод 
public function removeChild(child:DisplayObject):DisplayObject

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Удаляет заданный дочерний объект DisplayObject из списка потомков экземпляра DisplayObjectContainer. Свойство parent удаленного потомка получает значение null, а сам объект очищается, если нет других ссылок на потомка. Позиции индекса экранных объектов, расположенных над потомком в DisplayObjectContainer уменьшаются на 1.

Сборка мусора — это процесс, с помощью которого проигрыватель Flash Player перераспределяет неиспользуемую память. Когда на переменную или объект больше нет ссылок или он хранится в другом месте, сборщик мусора очищает и утилизирует память, которую он занимал, при условии отсутствия ссылок

Параметры

child:DisplayObject — Удаляемый экземпляр DisplayObject.

Возвращает
DisplayObject — Экземпляр DisplayObject, передаваемый в параметре child.

Выдает
ArgumentError — Выдается исключение, если дочерний параметр не является потомком данного объекта.

Пример

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляется два дочерних экранных объекта. Для объекта container добавляется прослушиватель событий, чтобы когда пользователь нажимает на дочерний объект контейнера, метод removeChild() удалял его из списка потомков контейнера.
 
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;

var container:Sprite = new Sprite();
addChild(container);

var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xFFCC00);
circle1.graphics.drawCircle(40, 40, 40);

var circle2:Sprite = new Sprite();
circle2.graphics.beginFill(0x00CCFF);
circle2.graphics.drawCircle(120, 40, 40);

container.addChild(circle1);
container.addChild(circle2);

container.addEventListener(MouseEvent.CLICK, clicked);

function clicked(event:MouseEvent):void {
    container.removeChild(DisplayObject(event.target)); 
}
removeChildAt()метод 
public function removeChildAt(index:int):DisplayObject

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Удаляет дочерний DisplayObject из заданной позиции индекса в списке потомков DisplayObjectContainer. Свойство parent удаленного потомка получает значение null, а сам объект очищается, если нет других ссылок на потомка. Позиции индекса экранных объектов, расположенных над потомком в DisplayObjectContainer уменьшаются на 1.

Сборка мусора — это процесс, с помощью которого проигрыватель Flash Player перераспределяет неиспользуемую память. Когда на переменную или объект больше нет ссылок или он хранится в другом месте, сборщик мусора очищает и утилизирует память, которую он занимал, при условии отсутствия ссылок

Параметры

index:int — Дочерний индекс объекта DisplayObject для удаления.

Возвращает
DisplayObject — Удаленный экземпляр DisplayObject.

Выдает
SecurityError — Данный дочерний экранный объект принадлежит изолированной программной среде, к которой нет доступа у вызывающего объекта. Чтобы избежать такой ситуации, дочерний ролик должен вызвать метод Security.allowDomain().
 
RangeError — Исключение выдается, если индекс не существует в списке потомков.

Пример

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляется два дочерних экранных объекта. Затем код показывает, что при вызове метода removeChildAt() для удаления потомка на самой нижней позиции индекса (0) все остальные дочерние объекты в списки перемещаются вниз на одну позицию.
import flash.display.Sprite;

var container:Sprite = new Sprite();

var sprite1:Sprite = new Sprite();
sprite1.name = "sprite1";
var sprite2:Sprite = new Sprite();
sprite2.name = "sprite2";

container.addChild(sprite1);
container.addChild(sprite2);

trace(container.numChildren) // 2
container.removeChildAt(0); 
trace(container.numChildren) // 1
trace(container.getChildAt(0).name); // sprite2
setChildIndex()метод 
public function setChildIndex(child:DisplayObject, index:int):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Изменяет положение существующего потомка в DisplayObjectContainer. Это отражается на иерархическом представлении дочерних объектов. Так, в следующем примере показано три разных объекта с именами a, b и c в позициях индекса 0, 1 и 2 соответственно.

c над b над a

Когда используется метод setChildIndex() и указывается уже занятая позиция индекса, меняются только позиции между прежней и новой позицией экранного объекта. Все остальные остаются без изменения. Если потомок перемещается на более НИЗКУЮ позицию, позиции всех потомков между этими позициями станут на 1 ВЫШЕ. Если потомок перемещается на более ВЫСОКУЮ позицию, позиции всех потомков между этими позициями станут на 1 НИЖЕ. Например, если контейнер экранных объектов из прошлого примера имеет имя container, можно поменять позициями экранные объекты с именами a и b, вызвав следующий код:

container.setChildIndex(container.getChildAt(1), 0);

В результате этого объекты выстраиваются следующим образом:

c над a над b

Параметры

child:DisplayObject — Дочерний экземпляр DisplayObject, для которого нужно изменить номер индекса.
 
index:int — Полученный в результате номер индекса для дочернего экранного объекта child.


Выдает
RangeError — Исключение выдается, если индекс не существует в списке потомков.
 
ArgumentError — Выдается исключение, если дочерний параметр не является потомком данного объекта.

См. также


Пример

В следующем примере создается контейнер экранных объектов с именем container, а затем в него добавляется три немного пересекающихся дочерних экранных объекта. Когда пользователь нажимает на один из этих объектов, метод clicked() вызывает метод setChildIndex(), чтобы переместить нажатый объект на верхнюю позицию в списке отображения объекта container.
import flash.display.Sprite;
import flash.events.MouseEvent;

var container:Sprite = new Sprite();
addChild(container);

var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xFF0000);
circle1.graphics.drawCircle(40, 40, 40);
circle1.addEventListener(MouseEvent.CLICK, clicked);
 
var circle2:Sprite = new Sprite();
circle2.graphics.beginFill(0x00FF00);
circle2.graphics.drawCircle(100, 40, 40);
circle2.addEventListener(MouseEvent.CLICK, clicked);
 
var circle3:Sprite = new Sprite();
circle3.graphics.beginFill(0x0000FF);
circle3.graphics.drawCircle(70, 80, 40);
circle3.addEventListener(MouseEvent.CLICK, clicked);
 
container.addChild(circle1);
container.addChild(circle2);
container.addChild(circle3);
addChild(container);
 
function clicked(event:MouseEvent):void {
    var circle:Sprite = Sprite(event.target);
    var topPosition:uint = container.numChildren - 1;
    container.setChildIndex(circle, topPosition);
}
swapChildren()метод 
public function swapChildren(child1:DisplayObject, child2:DisplayObject):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Меняет местами (в порядке "от начала к концу") два заданных дочерних объекта. Все остальные дочерние объекты в контейнере экранных объектов остаются на прежних позициях.

Параметры

child1:DisplayObject — Первый дочерний объект.
 
child2:DisplayObject — Второй дочерний объект.


Выдает
ArgumentError — Выдается исключение, если любой из дочерних параметров не является потомком данного объекта.

Пример

В следующем примере создается контейнер экранных объектов с именем container, затем в него добавляются два дочерних экранных объекта, после чего иллюстрируется результат вызова метода swapChildren().
import flash.display.Sprite;

var container:Sprite = new Sprite();

var sprite1:Sprite = new Sprite();
sprite1.name = "sprite1";
var sprite2:Sprite = new Sprite();
sprite2.name = "sprite2";

container.addChild(sprite1);
container.addChild(sprite2);

trace(container.getChildAt(0).name); // sprite1
trace(container.getChildAt(1).name); // sprite2

container.swapChildren(sprite1, sprite2);

trace(container.getChildAt(0).name); // sprite2
trace(container.getChildAt(1).name); // sprite1
swapChildrenAt()метод 
public function swapChildrenAt(index1:int, index2:int):void

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Меняет местами (в порядке "от начала к концу") дочерние объекты, расположенные в двух заданных позициях индекса в списке потомков. Все остальные дочерние объекты в контейнере экранных объектов остаются на прежних позициях.

Параметры

index1:int — Позиция индекса первого дочернего объекта.
 
index2:int — Позиция индекса второго дочернего объекта.


Выдает
RangeError — Если ни один индекс не существует в списке потомков.

Пример

В следующем примере создается контейнер экранных объектов с именем container, затем в него добавляются три дочерних экранных объекта, после чего показывается, как вызов методаswapChildrenAt() изменяет список отображения контейнера.
import flash.display.Sprite;

var container:Sprite = new Sprite();

var sprite1:Sprite = new Sprite();
sprite1.name = "sprite1";
var sprite2:Sprite = new Sprite();
sprite2.name = "sprite2";
var sprite3:Sprite = new Sprite();
sprite3.name = "sprite3";

container.addChild(sprite1);
container.addChild(sprite2);
container.addChild(sprite3);

trace(container.getChildAt(0).name); // sprite1
trace(container.getChildAt(1).name); // sprite2
trace(container.getChildAt(2).name); // sprite3

container.swapChildrenAt(0, 2);

trace(container.getChildAt(0).name); // sprite3
trace(container.getChildAt(1).name); // sprite2
trace(container.getChildAt(2).name); // sprite1
Примеры Как пользоваться примерами
DisplayObjectContainerExample.as

В следующем примере с помощью класса DisplayObjectContainerExample создается последовательность из пяти оранжевых квадратов Это можно сделать, выполнив следующие действия.
  1. Конструктор вызывает метод configureAssets().
  2. Метод configureAssets() создает объекты Sprite с именами child и lastChild.
  3. Цикл for создает мять оранжевых квадратов и располагает их один за другим.
  4. Каждый раз при создании объекта CustomSprite конструктор вызывает его метод draw(), который рисует квадрат размером 50 х 50 пикселов путем вызова методов beginFill(), drawRect() и endFill() класса Graphics. Метод addChild() добавляет каждый квадрат в список отображения.

package {
    import flash.display.DisplayObject;
    import flash.display.Sprite;

    public class DisplayObjectContainerExample extends Sprite {
        private var gutter:uint     = 5;
        private var childCount:uint = 5;

        public function DisplayObjectContainerExample() {
            configureAssets();
        }

        private function configureAssets():void {
            var child:Sprite = new CustomSprite();
            var lastChild:Sprite = child;
            for (var i:uint = 1; i <= childCount; i++) {
                child = new CustomSprite();
                child.x = lastChild.x + lastChild.width + gutter;
                addChild(child);
                lastChild = child;
            }
        }
    }
}

import flash.display.Sprite;

class CustomSprite extends Sprite {
    private var size:uint = 50;
    private var bgColor:uint = 0xFFCC00;

    public function CustomSprite() {
        draw(size, size);
    }

    private function draw(w:uint, h:uint):void {
        graphics.beginFill(bgColor);
        graphics.drawRect(0, 0, w, h);
        graphics.endFill();
    }
}