Руководство по actionscript. часть 3, стр. 014
Для разрешения этой ситуации в прикладной среде Flex определяется пространство имен mx internal, используемое для уточнения методов и переменных, которые не должны быть видны за пределами прикладной среды, но при этом должны быть доступны в различных пакетах внутри ее.
Вот объявление пространства имен mx internal:
package mx. core { public namespace mx_internal =
«http://www. adobe. com/2006/f1ex/mx/i nternal»;
}
Рассмотрим конкретный пример использования пространства имен mx internal из прикладной среды Flex.
Для работы с табличными данными наподобие тех, которые используются в программах электронных таблиц, прикладная среда Flex предоставляет компонент DataGr id. Класс DataGrid находится в пакете mx. controls. Вспомогательные классы для компонента Dat aGr id размещаются в отдельном пакете:mx. controls. gridclasses. Чтобы взаимодействие между классом DataGrid и его вспомогательными классами осуществлялось максимально эффективно, DataGrid обращается к некоторым внутренним переменным его вспомогательных классов напрямую, а не с помощью доступных всем методов-получателей. Однако эти внутренние переменные не должны использоваться классами за пределами прикладной среды Flex, поэтому они уточняются пространством имен mx internal. Например, вспомогательный класс mx. controls. gridclasses. DataGridColumn хранит индекс столбца в переменной mx_internal: : colNum.
// Файл DataGridColumn. as mx_internal var colNum:Number;
Чтобы получить индекс столбца, класс DataGrid сначала открывает пространство имен mx_internal:
use namespace mx_internal;
а затем обращается к переменной mx internal: : colNum напрямую, как показано в следующем фрагменте кода, взятого из определения метода-писателя:
// Файл DataGrid. as
public function set columns(value:Array):void { // Инициализируем «colNum» для всех столбцов var n:int = value. length; for (var i:int = 0; i < n; i++) {
var column:DataGridColumn = _columns[i];
column. owner = this;
// Обращаемся к переменной mx_internal::colNum напрямую. (Напомним, что
// пространство имен mx_internal открыто, поэтому выражение
// column. colNum эквивалентно выражению column. mx_internal: .colNum.)
column. colNum = i;
}
// Оставшаяся часть метода не приводится
}
Классы за пределами прикладной среды Flex для получения индекса столбца используют общедоступный метод getColumnlndex ( ) вместо обращения к переменной mx_internal: : colNum напрямую.