flash.accessibilityISimpleTextSelection Класс ISimpleTextSelection можно использовать для добавления поддержки интерфейса MSAA ISimpleTextSelection в экземпляр AccessibilityImplementation. Класс ISimpleTextSelection можно использовать для добавления поддержки интерфейса MSAA ISimpleTextSelection в экземпляр AccessibilityImplementation.

Если подкласс AccessibilityImplementation реализует эти два получателя в данном классе, то программа чтения экрана, такая как JAWS, может с их помощью определить диапазон выделения текста. Подкласс AccessibilityImplementation не должен формально объявлять то, что он реализует этот интерфейс. Достаточно объявить получателей для этих двух свойств следующим образом:

class TextAreaAccImpl extends AccesibilityImplementation { ... public function get selectionAnchorIndex():int { ... } public function get selectionActiveIndex():int { ... } }
flash.accessibility.AccessibilityImplementationselectionActiveIndex Отсчитываемое от нуля значение индекса для последнего символа в текущем выделенном фрагменте.int Отсчитываемое от нуля значение индекса для последнего символа в текущем выделенном фрагменте. Если требуется, чтобы компонент поддерживал встроенный редактор IME или специальные возможности, необходимо переопределить этот метод. selectionAnchorIndex Отсчитываемое от нуля значение индекса для первого символа в текущем выделенном фрагменте.int Отсчитываемое от нуля значение индекса для первого символа в текущем выделенном фрагменте. Если требуется, чтобы компонент поддерживал встроенный редактор IME или специальные возможности, необходимо переопределить этот метод.
AccessibilityImplementation Класс AccessibilityImplementation является базовым классом в Flash Player, реализующим расширенный доступ в компонентах.Object Класс AccessibilityImplementation является базовым классом в Flash Player, реализующим расширенный доступ в компонентах. Этот класс обеспечивает связь между компонентом и средством чтения с экрана. Средства чтения с экрана применяются для представления содержимого экрана в виде синтезированной речи или шрифта Брайля для слабовидящих пользователей.

Класс AccessibilityImplementation предоставляет набор методов, которые позволяют разработчику компонентов создавать информацию о системных ролях, событиях на основе объектов и состояниях, доступных для специальных возможностей.

Adobe Flash Player использует платформу Microsoft Active Accessibility (MSAA), которая обеспечивает наглядный и стандартизированный способ взаимодействия приложений и программ чтения с экрана. Для получения дополнительной информации о работе Flash Player с MSAA см. главу о специальных возможностях в документе Использование Flex SDK.

Методы класса AccessibilityImplementation являются подмножеством интерфейса IAccessible для экземпляра компонента.

Способ, которым AccessibilityImplementation реализует интерфейс IAccessible, и отправляемые им события зависят от вида реализуемого компонента.

Не следует создавать экземпляр AccessibilityImplementation непосредственно путем вызова его конструктора. Вместо этого можно создать новые реализации расширенного доступа, расширив класс AccImpl для каждого нового компонента. Во Flash см. пакет fl.accessibility. Во Flex см. пакет mx.accessibility и главу о специальных возможностях в руководстве Использование Flex SDK.

Примечание. Класс AccessibilityImplementation не поддерживается в среде выполнения AIR до версий 2. Класс доступен для компиляции в среде AIR до версии 2, но не поддерживается в среде выполнения в AIR до версии 2.

AccessibilityImplementation Статический конструктор. Статический конструктор. Не следует создавать экземпляр AccessibilityImplementation непосредственно путем вызова его конструктора. Вместо этого можно создать новые реализации расширенного доступа, расширив класс mx.accessibility.AccImpl для каждого нового компонента. mx.accessibility.AccImplaccDoDefaultAction Метод IAccessible, выполняющий действия по умолчанию, связанные с компонентом, представленным этим AccessibilityImplementation или являющимся одним из его дочерних элементов.childIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Выполняет действие по умолчанию, связанное с компонентом. Метод IAccessible, выполняющий действия по умолчанию, связанные с компонентом, представленным этим AccessibilityImplementation или являющимся одним из его дочерних элементов.

Этот метод следует реализовывать только в том случае, если AccessibilityImplementation представляет элемент пользовательского интерфейса, имеющий действие по умолчанию в модели MSAA.

При реализации accDoDefaultAction() только для AccessibilityImplementation или только для его дочерних элементов необходимо в некоторых случаях указать отсутствие действия по умолчанию для определенного childID, который был передан. Для этого следует задать свойству errno значение E_MEMBERNOTFOUND.

В нижеследующем примере показана реализация этого метода для выполнения соответствующего действия по умолчанию в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. Выполнение действия по умолчанию «двойной щелчок» для одного из дочерних элементов пункта списка класса ListBase и наследуемых из него классов выделяет этот элемент. override public function accDoDefaultAction(childID:uint):void { if (childID > 0) ListBase(master).selectedIndex = childID - 1; }
accLocation Метод MSAA для возвращения DisplayObject или Rectangle с указанием ограничительной рамки дочернего элемента в AccessibilityImplementation.DisplayObject или Rectangle с указанием ограничительной рамки дочернего элемента, определенного параметром childID. childIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Возвращает объект DisplayObject или Rectangle, который определяет ограничительную рамку дочернего элемента. Метод MSAA для возвращения DisplayObject или Rectangle с указанием ограничительной рамки дочернего элемента в AccessibilityImplementation.

Этот метод никогда не вызывается с childID равным нулю. Если AccessibilityImplementation никогда не будет содержать дочерние элементы, то не следует реализовывать этот метод. Если AccessibilityImplementation может содержать дочерние элементы, то этот метод обязателен.

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

Если дочерний элемент не отвечает вышеизложенным требованиям, можно самостоятельно рассчитать значения ограничительной рамки и возвратить Rectangle со свойствами: x, y, width и height. Элементы x и y определяют верхний левый угол ограничительной рамки, в то время как элементы width и height определяют ее размер. Все четыре элемента должны измеряться в пикселях Stage и иметь отношение к источнику компонента, представляемого AccessibilityImplementation. Свойства x и y могут иметь отрицательные значения, так как источник DisplayObject не обязательно находится в левом верхнем углу.

Если дочерний элемент, указанный childID, не видим (т.е. get_accState для этого дочернего элемента возвратит значение, включающее STATE_SYSTEM_INVISIBLE), можно возвратить null из accLocation. Также можно возвратить Rectangle, представляющий координаты, где дочерний элемент появился бы в случае, если бы он был видимым.

В нижеследующем примере показана реализация этого метода для возвращения местоположения данного дочернего элемента в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. override public function accLocation(childID:uint):* { var listBase:ListBase = ListBase(master); var index:uint = childID - 1; if (index < listBase.verticalScrollPosition || index >= listBase.verticalScrollPosition + listBase.rowCount) { return null; } var item:Object = getItemAt(index); return listBase.itemToItemRenderer(item); }
flash.display.DisplayObjectflash.geom.RectanglegetChildIDArray()Центр разработчиков специальных возможностей Microsoft: IAccessible:: accLocation
accSelect Метод IAccessible для изменения выбора в компоненте, представленным этим AccessibilityImplementation.operationuintБитовое поле, состоящее одной или более констант флага выбора для обозначения того, как элемент выбирается и получает фокус. childIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Метод IAccessible для изменения выбора в компоненте, представленным этим AccessibilityImplementation.

Параметр childID всегда будет отличным от нуля. Этот метод всегда применяется к дочернему элементу, а не полному компоненту, выбором которого управляет Flash Player.

Параметр selFlag является битовым полем, состоящим из одной или более констант флага выбора, позволяющим клиенту MSAA указывать, как элемент, имеющий ссылку на childID, должен выбираться или получать фокус. Далее следуют описания констант флага выбора и информация, сообщаемая ими реализации специальных возможностей. На практике большинство реализаций этого метода в реализациях специальных возможностей, которые наследуются из класса Flex mx.accessibility.ListBaseAccImpl, игнорирует константу selFlag и вместо этого учитывает поведение компонента при выборе клавиатуры для обработки нескольких выборов.

Параметр selFlag может содержать или не содержать флаг SELFLAG_TAKEFOCUS. Если он содержит флаг, то необходимо установить фокус дочернего элемента на указанный childID и, если не присутствует также SELFLAG_EXTENDSELECTION, назначить этот дочерний элемент привязкой выбора. В противном случае фокус дочернего элемента и привязка выбора должны оставаться без изменений несмотря на то, что дополнительные флаги, представленные ниже, могут изменять выбор.

Параметр selFlag всегда будет содержать один из следующих четырех флажков, которые обозначают требуемый вид модификации выбора:

  • SELFLAG_TAKESELECTION: Отмените любой существующий выбор и установите выбор для указанного childID.

  • SELFLAG_EXTENDSELECTION: Вычислите диапазон дочерних элементов между (и включая) точкой привязки для выбора и указанным childID. Если SELFLAG_ADDSELECTION присутствует, добавьте все эти дочерние элементы к выбору. Если SELFLAG_REMOVESELECTION присутствует, удалите все эти дочерние элементы из выбора. Если отсутствует SELFLAG_ADDSELECTION или SELFLAG_REMOVESELECTION, все эти дочерние элементы должны принять состояние выбора точки привязки для выбора: если точка привязки для выбора выбрана, добавьте эти дочерние элементы к выбору, в противном случае удалите их из выбора.

  • SELFLAG_ADDSELECTION (без SELFLAG_EXTENDSELECTION): Добавьте указанный childID к выбору.

  • SELFLAG_REMOVESELECTION (без SELFLAG_EXTENDSELECTION): Удалите указанный childID из выбора.

Обратите внимание, что для не многократно выбираемого компонента, единственными действительными значениями параметра selFlag являются SELFLAG_TAKEFOCUS и SELFLAG_TAKESELECTION. Теоретически возможна поддержка SELFLAG_REMOVESELECTION для не многократно выбираемого компонента, позволяющего пользователю принудительно выбирать null, но на практике большинство не многократно выбираемых компонентов не действуют таким образом и клиенты MSAA не могут выполнить попытку этого типа операции.

При наличии флажков, которые кажутся недопустимыми, установите для errno значение E_INVALIDARG.

В заключение, учтите, что при вызове accSelect Flash Player обеспечивает для него наличие фокуса хоста (фокуса окна его приложения контейнера) и наличие фокуса у пользовательского компонента в Flash Player.

В нижеследующем примере показана реализация этого метода для выбора дочернего элемента в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. override public function accSelect(selFlag:uint, childID:uint):void { var listBase:ListBase = ListBase(master); var index:uint = childID - 1; if (index >= 0 && index < listBase.dataProvider.length) listBase.selectedIndex = index; }
getChildIDArray()Центр разработчиков специальных возможностей Microsoft: IAccessible::accSelect
getChildIDArray Возвращает массив, содержащий идентификаторы целого числа без знака для всех дочерних элементов в AccessibilityImplementation.Массив, содержащий идентификаторы целого числа без знака всех дочерних элементов в AccessibilityImplementation. Array Возвращает массив, содержащий идентификаторы целого числа без знака для всех дочерних элементов в AccessibilityImplementation.

Длина массива может быть нулевой. Идентификаторы в массиве должны появляться в том же логическом порядке, что и представляемые ими дочерние элементы. Если AccessibilityImplementation может содержать дочерние элементы, то этот метод обязателен; в противном случае не следует его реализовывать.

При назначении дочерних идентификаторов пользовательским дочерним элементам используйте любую схему, которая сохраняет уникальность в пределах каждого экземпляра пользовательского AccessibilityImplementation. Дочерние идентификаторы не должны быть смежными, и для их упорядочения не требуется соответствие логическому упорядочению дочерних элементов. Дочерние идентификаторы не должны использоваться многократно: при удалении дочернего элемента его идентификатор никогда не должен использоваться снова в период существования этого экземпляра AccessibilityImplementation. Следует учесть, что ввиду различных вариантов реализации в коде Flash Player возможны нежелательные варианты поведения при использовании дочерних идентификаторов, число которых превышает один миллион.

В нижеследующем примере показана реализация этого метода для возвращения массива идентификаторов дочерних элементов в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. override public function getChildIDArray():Array { var childIDs:Array = []; if (ListBase(master).dataProvider) { var n:uint = ListBase(master).dataProvider.length; for (var i:int = 0; i < n; i++) { childIDs[i] = i + 1; } } return childIDs; }
get_accDefaultAction Метод MSAA для возвращения заданных по умолчанию действий компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.Строка операции по умолчанию, указанная в модели MSAA для AccessibilityImplementation или одного из его дочерних элементов. StringchildIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Возвращает действие по умолчанию для компонента. Метод MSAA для возвращения заданных по умолчанию действий компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.

Этот метод следует реализовывать только в том случае, если AccessibilityImplementation представляет элемент пользовательского интерфейса, имеющий действие по умолчанию в модели MSAA. Убедитесь, что возвращена именно та строка, которую указывает модель MSAA. Например, строкой действия по умолчанию для компонента Button является «Press».

При реализации get_accDefaultAction только для AccessibilityImplementation или только для его дочерних элементов необходимо в некоторых случаях указать отсутствие действия по умолчанию для определенного childID, который был передан. Это выполняется возвращением значения null.

В нижеследующем примере показана реализация этого метода для возвращения соответствующих действий по умолчанию в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. override public function get_accDefaultAction(childID:uint):String { if (childID == 0) return null; return "Double Click"; }
getChildIDArray()Центр разработчиков специальных возможностей Microsoft: IAccessible::get_accDefaultAction
get_accFocus Метод MSAA для возвращения идентификаторов целого числа без знака для дочернего элемента, при его наличии, имеющего дочерний фокус в компоненте.Идентификатор целого числа без знака для дочернего элемента, при его наличии, имеющего дочерний фокус в компоненте. uintВозвращает идентификатор целого числа без знака для дочернего элемента, имеющего дочерний фокус в компоненте. Метод MSAA для возвращения идентификаторов целого числа без знака для дочернего элемента, при его наличии, имеющего дочерний фокус в компоненте. Если ни у одного дочернего элемента нет дочернего фокуса, метод возвращает нуль. В нижеследующем примере показана реализация этого метода для возвращения childID с фокусом в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. override public function get_accFocus():uint { var index:uint = ListBase(master).selectedIndex; return index >= 0 ? index + 1 : 0; } getChildIDArray()Центр разработчиков специальных возможностей Microsoft: IAccessible::get_accFocusget_accName Метод MSAA для возвращения имени компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.Имя компонента или одного из его дочерних элементов. StringchildIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Возвращает имя компонента. Метод MSAA для возвращения имени компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.

В случае AccessibilityImplementation непосредственно (childID == 0), если этот метод не реализован или не возвращает значение, Flash Player использует значение свойства AccessibilityProperties.name при его наличии.

Для AccessibilityImplementation, у которого могут быть дочерние элементы, этот метод должен быть реализован и должен возвратить строковое значение при childID отличном от нуля.

В зависимости от типа элемента интерфейса пользователя имена в MSAA означают один из двух различных вариантов: назначенное автором имя или фактическое содержимое текста элемента. Обычно AccessibilityImplementation будет относиться к прежней категории. Его свойство name представляет имя, назначенное автором. Дочерние элементы всегда относятся ко второй категории. Их имена обозначают содержимое их текста.

Когда свойство name у AccessibilityImplementation имеет значение назначенного автором имени, компоненты могут получить имена от авторов двумя способами. Первый способ определяет имена, существующие непосредственно в компоненте; например, компонент флажка может включить метку текста в качестве имени. Второй способ, который является резервным для первого способа, определяет имена, указанные в пользовательском интерфейсе и заканчивающиеся в AccessibilityProperties.name. Этот резервный способ позволяет пользователям указывать имена аналогично тому, как они указываются для любого другого Sprite или MovieClip.

Таким образом, непосредственно для AccessibilityImplementation (childID == zero) существует три возможности:

  • Назначенное автором имя в компоненте Метод get_accName должен быть реализован и должен возвратить строковое значение, которое содержит имя AccessibilityImplementation при childID равном нулю. Если childID равен нулю, но у AccessibilityImplementation отсутствует имя, get_accName должен возвратить пустую строку, чтобы предотвратить обращение проигрывателя к свойству AccessibilityProperties.name.

  • Назначенное автором имя из пользовательского интерфейса Если у AccessibilityImplementation могут быть дочерние элементы, метод get_accName должен быть реализован, но не должен возвращать значение при childID равном нулю. Если AccessibilityImplementation никогда не будет содержать дочерние элементы, то не следует реализовывать метод get_accName.

  • Имя, обозначающее содержимое Метод get_accName должен быть реализован и должен возвратить соответствующее строковое значение при childID равном нулю. Если childID равен нулю, но у AccessibilityImplementation отсутствует содержимое, get_accName должен возвратить пустую строку, чтобы предотвратить обращение проигрывателя к свойству AccessibilityProperties.name.

Обратите внимание, что для дочерних элементов (при их наличии у AccessibilityImplementation) всегда применяется третий способ. Метод get_accName должен быть реализован и должен возвратить соответствующее строковое значение при childID отличном от нуля.

В нижеследующем примере показана реализация этого метода в классе Flex mx.accessibility.AccImpl - основная реализация специальных возможностей в Flex. override public function get_accName(childID:uint):String { // Start with the name of the component's parent form // if the component is contained within a form var accName:String = UIComponentAccImpl.getFormName(master); // If the element requested is the component itself, // append the value of any assigned accessibilityProperties.name if (childID == 0 && master.accessibilityProperties && master.accessibilityProperties.name && master.accessibilityProperties.name != "") accName += master.accessibilityProperties.name + " "; // Append the value of the childIDs name // returned by the component-specific override // of the mx.accessibility.AccImpl.getName() utility function, // and append the component's status returned by the // component-specific override of the // mx.accessibility.AccImpl.getStatusName() utility function accName += getName(childID) + getStatusName(); // Return the assembled String if it is neither empty nor null, // otherwise return null return (accName != null && accName != "") ? accName : null; }
getChildIDArray()flash.accessibility.AccessibilityPropertiesflash.accessibility.AccessibilityProperties.namemx.accessibility.AccImpl.get_accName()mx.accessibility.AccImpl.getName()mx.accessibility.AccImpl.getStatusName()Центр разработчиков специальных возможностей Microsoft: IAccessible::get_accName
get_accRole Метод MSAA для возвращения системной роли компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.Код ошибки 2143, значения по умолчанию для AccessibilityImplementation.get_accRole() должны быть изменены. ErrorErrorСистемная роль, связанная с компонентом. uintchildIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Возвращает системную роль для компонента Метод MSAA для возвращения системной роли компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов. Системные роли предопределены для всех компонентов в MSAA. getChildIDArray()Константы AccessibilityImplementation: константы роли объектаЦентр разработчиков специальных возможностей Microsoft: IAccessible::get_accRoleget_accSelection Метод MSAA для возвращения массива, содержащего идентификаторы всех выбранных дочерних элементов.Массив идентификаторов всех выбранных дочерних элементов. ArrayВозвращает массив, содержащий идентификаторы всех выбранных дочерних элементов. Метод MSAA для возвращения массива, содержащего идентификаторы всех выбранных дочерних элементов. Возвращенный массив может содержать нуль, один или больше идентификаторов, все из которых являются целыми числами без знака. В нижеследующем примере показана реализация этого метода для возвращения выбранного childID в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. override public function get_accSelection():Array { var accSelection:Array = []; var selectedIndices:Array = ListBase(master).selectedIndices; var n:int = selectedIndices.length; for (var i:int = 0; i < n; i++) { accSelection[i] = selectedIndices[i] + 1; } return accSelection; } getChildIDArray()Центр разработчиков специальных возможностей Microsoft: IAccessible::get_accSelectionget_accState Метод IAccessible для возвращения текущего состояния времени выполнения компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.Код ошибки 2144, значения по умолчанию для AccessibilityImplementation.get_accState() должны быть изменены. ErrorErrorСочетание нуля, одной или более системных констант состояния. Несколько констант собираются в битовое поле с использованием побитового оператора ИЛИ (|). uintchildIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Возвращает состояние компонента Метод IAccessible для возвращения текущего состояния времени выполнения компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.

Этот метод должен возвратить сочетание нуля, одной или более предопределенных констант состояния объекта для компонентов в MSAA. При применении более одного состояния константы состояния должны быть объединены в битовое поле с использованием побитового оператора ИЛИ (|).

Для обозначения того, что ни одна из констант состояния в данное время не применяется, этот метод должен возвратить нуль.

Состояния STATE_SYSTEM_FOCUSABLE или STATE_SYSTEM_FOCUSED не требуется отслеживать или записывать. Flash Player обрабатывает эти состояния автоматически.

В нижеследующем примере показана реализация этого метода для объединения нескольких констант состояния в mx.accessibility.ListBaseAccImpl - реализация специальных возможностей Flex ListBase. override public function get_accState(childID:uint):uint { var accState:uint = getState(childID); if (childID > 0) { var listBase:ListBase = ListBase(master); var index:uint = childID - 1; // For returning states (OffScreen and Invisible) // when the list Item is not in the displayed rows. if (index < listBase.verticalScrollPosition || index >= listBase.verticalScrollPosition + listBase.rowCount) { accState |= (STATE_SYSTEM_OFFSCREEN | STATE_SYSTEM_INVISIBLE); } else { accState |= STATE_SYSTEM_SELECTABLE; var item:Object = getItemAt(index); var renderer:IListItemRenderer = listBase.itemToItemRenderer(item); if (renderer != null && listBase.isItemSelected(renderer.data)) accState |= STATE_SYSTEM_SELECTED | STATE_SYSTEM_FOCUSED; } } return accState; }
getChildIDArray()Константы AccessibilityImplementation: константы состояния объектаЦентр разработчиков специальных возможностей Microsoft: IAccessible::get_accState
get_accValue Метод MSAA для возвращения значения времени выполнения компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.Строка, представляющая значение времени выполнения компонента одного из его дочерних элементов. StringchildIDuintЦелое число без знака, относящееся к одному из дочерних элементов компонента в соответствии с getChildIDArray(). Возвращает значение компонента Метод MSAA для возвращения значения времени выполнения компонента, представленного этим AccessibilityImplementation, или одного из его дочерних элементов.

Этот метод следует реализовывать только в том случае, если AccessibilityImplementation представляет элемент пользовательского интерфейса, имеющий значение в модели MSAA. Следует учесть, что некоторые элементы пользовательского интерфейса, имеющие очевидное «значение», предоставляют это значение различными средствами, такими как get_accName ( например, текст), get_accState (например, флажки) или get_accSelection (например, поля списка).

При реализации get_accValue только для AccessibilityImplementation или только для его дочерних элементов необходимо в некоторых случаях указать отсутствие понятие значения для определенного childID, который был передан. Это выполняется возвращением значения null.

В нижеследующем примере показана реализация этого метода для возвращения соответствующего значения на основе значения selectedIndex компонента в классе Flex mx.accessibility.ListBaseAccImpl - реализация специальных возможностей ListBase. override public function get_accValue(childID:uint):String { var accValue:String; var listBase:ListBase = ListBase(master); var index:int = listBase.selectedIndex; if (childID == 0) { if (index > -1) { var item:Object = getItemAt(index); if (item is String) { accValue = item + " " + (index + 1) + " of " + listBase.dataProvider.length; } else { accValue = listBase.itemToLabel(item) + " " + (index + 1) + " of " + listBase.dataProvider.length; } } } return accValue; }
getChildIDArray()Центр разработчиков специальных возможностей Microsoft: IAccessible::get_accValue
isLabeledBy Возвращает значение true или false, чтобы указать, должен ли текстовый объект с ограничительной рамкой, определенной свойствами x, y, width и height, рассматриваться как метка для компонента, представленного данным экземпляром AccessibilityImplementation.true или false, чтобы указать, должен ли текстовый объект с данными границами рассматриваться как метка для компонента, представленного данным экземпляром AccessibilityImplementation. BooleanlabelBoundsflash.geom:RectangleОбъект Rectangle, представляющий ограничительную рамку текстового объекта. Указывает, является ли соседний текстовый объект меткой для этого компонента. Возвращает значение true или false, чтобы указать, должен ли текстовый объект с ограничительной рамкой, определенной свойствами x, y, width и height, рассматриваться как метка для компонента, представленного данным экземпляром AccessibilityImplementation.

Координаты x и y определяются относительно верхнего левого угла компонента, к которому применяется экземпляр AccessibilityImplementation, и могут быть отрицательными. Все координаты находятся в пределах области uint пикселов рабочей области.

Этот метод позволяет сделать доступные компоненты пригодными для поиска отношений автоматической пометки во Flash Player, которые позволяют использовать внешний текст (по отношению к объекту) в качестве источника имени объекта. Данный метод необходим, потому что критерии распознавания меток могут варьироваться в зависимости от компонента. Если реализуется этот метод, необходимо ориентироваться на геометрические критерии, подобные используемым в коде проигрывателя для кнопок и текстовых полей. Эти критерии перечислены ниже.

  • Для кнопок любой текст, который полностью помещается на кнопке, считается меткой.
  • Для текстовых полей любой текст, который находится над текстовым полем и выровнен по левому краю или находится слева от него, считается меткой.

Если компонент, который представлен экземпляром AccessibilityImplementation, никогда не должен участвовать в автоматических отношениях пометки, для него не следует реализовывать isLabeledBy. Так как при этом всегда будет возвращаться значение false. Например, isLabeledBy не следует внедрять, когда экземпляр AccessibilityImplementation рассматривается как «назначенное автором имя в компоненте» (этот случай рассматривался в разделе get_accName выше.

Обратите внимание, что этот метод не основан на методах класса IAccessible и используется только для Flash.

errno Обозначает код ошибки.uint Обозначает код ошибки. Ошибки отображаются не в значениях возвращаемых данных, а во внешнем канале. Для обозначения ошибки следует установить свойство errno для одного из кодов ошибок, перечисленных в приложении «Константы AccessibilityImplementation». При этом значение возвращаемых данных будет игнорироваться. Проигрыватель всегда отменяет (устанавливает на нуль) свойство errno пользовательского AccessibilityImplementation перед вызовом любого метода AccessibilityImplementation. Константы AccessibilityImplementationstub Используется для создания подпрограммы специальных возможностей компонента.Boolean Используется для создания подпрограммы специальных возможностей компонента. Если компонент выпущен без реализации специальных возможностей ActionScript, Adobe рекомендует добавить подпрограмму специальных возможностей компонента. В целях использования специальных возможностей с помощью этой заглушки Flash Player обрабатывает компонент как простой графический объект вместо предоставления внутренней структуры кнопок, текстовых полей и т. д. в компоненте.

Для создания подпрограммы специальных возможностей компонента следует создать подкласс класса AccImpl, заменив подпрограмму свойства на значение true.

Класс mx.accessibility.AccImpl во Flex (\sdks\4.0.0\frameworks\projects\framework\src\mx\accessibility\AccImpl.as)Класс fl.accessibility.AccImpl во Flash (\Local Settings\Application Data\Adobe\Flash CS5\ru_RU\Configuration\Classes\mx\accessibility\AccImpl.as)
AccessibilityProperties Класс AccessibilityProperties позволяет управлять представлением объектов Flash в средствах обеспечения специальных возможностей, например в средствах чтения с экрана.Object Класс AccessibilityProperties позволяет управлять представлением объектов Flash в средствах обеспечения специальных возможностей, например в средствах чтения с экрана.

Можно прикрепить объект AccessibilityProperties к любому экранному объекту, но проигрыватель Flash Player будет читать объект AccessibilityProperties только для определенных объектов: SWF-файлы целиком (представленные классом DisplayObject.root, объектами контейнера DisplayObjectContainer и подклассами), кнопки (представленные SimpleButton и подклассами) и текстовые поля (представленные TextField и подклассами).

Свойство name этих объектов является самым важным задаваемым свойством, потому что навигация с использованием средств расширенного доступа осуществляется по именам объектов. Не путайте свойство AccessibilityProperties.name со свойством DisplayObject.name — это разные не связанные свойства. Свойство AccessibilityProperties.name является именем, читаемым вслух с помощью средств расширенного доступа, тогда как DisplayObject.name является именем переменной, доступной только в коде ActionScript.

Во Flash Professional во время разработки свойства объектов AccessibilityProperties подменяют соответствующие параметры, доступные на панели специальных возможностей.

Для определения, запущен ли проигрыватель Flash Player в окружении, поддерживающем средства расширенного доступа, используйте свойство Capabilities.hasAccessibility. При модификации объекта AccessibilityProperties необходимо вызвать метод Accessibility.updateProperties(), чтобы изменения вступили в силу.

В следующем примере показано, как использовать классы AccessibilityExample, CustomAccessibleButton, CustomSimpleButton и ButtonDisplayState для создания меню, соответствующего требованиям доступности веб-контента и совместимого с основными программами экранного доступа. Основные функции класса AccessibilityProperties таковы:
  1. Вызовите configureAssets, в результате чего будет создана специальная кнопка, а для нее будут заданы ярлык и описание. Это значения, которые программа экранного доступа отображает для конечного пользователя.
  2. Вызовите функцию setTimeOut(), чтобы дать проигрывателю Flash Player достаточно времени для обнаружения программы экранного доступа, прежде чем будут обновлены свойства.

Примечание. Вызовите setTimeout() перед проверкой Accessibility.active. чтобы дать проигрывателю Flash Player те 2 секунды, которые требуются ему для подключения к программе чтения экрана (если доступна). Если не будет выделено достаточно времени задержки, вызов setTimeout может возвратить значение false, даже если существует доступная программа чтения экрана.

В следующем примере показана обработка метода Accessibility.updateProperties() только в том случае, если вызов Accessibility.active возвращает true, что происходит лишь когда проигрыватель Flash Player подключен к активной программе чтения экрана. Если метод updateProperties вызывается без средства чтения с экрана, то вызывается исключение IllegalOperationError.

package { import flash.display.Sprite; import flash.accessibility.Accessibility; import flash.utils.setTimeout; public class AccessibilityPropertiesExample extends Sprite { public static const BUTTON_WIDTH:uint = 90; public static const BUTTON_HEIGHT:uint = 20; private var gutter:uint = 5; private var menuLabels:Array = new Array("PROJECTS", "PORTFOLIO", "CONTACT"); private var menuDescriptions:Array = new Array("Learn more about our projects" , "See our portfolio" , "Get in touch with our team"); public function AccessibilityPropertiesExample() { configureAssets(); setTimeout(updateAccessibility, 2000); } private function updateAccessibility():void { trace("Accessibility.active: " + Accessibility.active); if(Accessibility.active) { Accessibility.updateProperties(); } } private function configureAssets():void { var child:CustomAccessibleButton; for(var i:uint; i < menuLabels.length; i++) { child = new CustomAccessibleButton(); child.y = (numChildren * (BUTTON_HEIGHT + gutter)); child.setLabel(menuLabels[i]); child.setDescription(menuDescriptions[i]); addChild(child); } } } import flash.accessibility.AccessibilityProperties; import flash.display.Shape; import flash.display.SimpleButton; import flash.display.Sprite; import flash.events.Event; import flash.text.TextFormat; import flash.text.TextField; class CustomAccessibleButton extends Sprite { private var button:SimpleButton; private var label1:TextField; private var description:String; private var _name:String; public function CustomAccessibleButton(_width:uint = 0, _height:uint = 0) { _width = (_width == 0) ? AccessibilityPropertiesExample.BUTTON_WIDTH : _width; _height = (_height == 0) ? AccessibilityPropertiesExample.BUTTON_HEIGHT : _height; button = buildButton(_width, _height); label1 = buildLabel(_width, _height); addEventListener(Event.ADDED, addedHandler); } private function addedHandler(event:Event):void { trace("addedHandler: " + name); var accessProps:AccessibilityProperties = new AccessibilityProperties(); accessProps.name = this._name; accessProps.description = description; accessibilityProperties = accessProps; removeEventListener(Event.ADDED, addedHandler); } private function buildButton(_width:uint, _height:uint):SimpleButton { var child:SimpleButton = new CustomSimpleButton(_width, _height); addChild(child); return child; } private function buildLabel(_width:uint, _height:uint):TextField { var format:TextFormat = new TextFormat(); format.font = "Verdana"; format.size = 11; format.color = 0xFFFFFF; format.align = TextFormatAlign.CENTER; format.bold = true; var child:TextField = new TextField(); child.y = 1; child.width = _width; child.height = _height; child.selectable = false; child.defaultTextFormat = format; child.mouseEnabled = false; addChild(child); return child; } public function setLabel(text:String):void { label1.text = text; this._name = text; } public function setDescription(text:String):void { description = text; } } class CustomSimpleButton extends SimpleButton { private var upColor:uint = 0xFFCC00; private var overColor:uint = 0xCCFF00; private var downColor:uint = 0x00CCFF; public function CustomSimpleButton(_width:uint, _height:uint) { downState = new ButtonDisplayState(downColor, _width, _height); overState = new ButtonDisplayState(overColor, _width, _height); upState = new ButtonDisplayState(upColor, _width, _height); hitTestState = new ButtonDisplayState(upColor, _width, _height); useHandCursor = true; } } class ButtonDisplayState extends Shape { private var bgColor:uint; private var _width:uint; private var _height:uint; public function ButtonDisplayState(bgColor:uint, _width:uint, _height:uint) { this.bgColor = bgColor; this._width = _width; this._height = _height; draw(); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, _width, _height); graphics.endFill(); } } }
flash.accessibility.Accessibility.updateProperties()flash.display.DisplayObject.accessibilityPropertiesflash.display.InteractiveObject.tabIndexflash.system.Capabilities.hasAccessibilityAccessibilityProperties Создает новый объект AccessibilityProperties. Создает новый объект AccessibilityProperties. description Позволяет назначить экранному объекту описание в файле презентации с расширенным доступом.String Позволяет назначить экранному объекту описание в файле презентации с расширенным доступом. Если на текущий момент имеется достаточно информации об объекте, то целесообразней выбрать короткое имя и поместить большую часть содержания в свойство description. Применяется к SWF-файлам целиком, контейнерам, кнопкам и тексту. Значение по умолчанию — пустая строка.

Во Flash Professional это свойство соответствует полю «Описание» на панели «Расширенный доступ».

forceSimple При значении true предписывает проигрывателю Flash Player исключить дочерние объекты этого экранного объекта из файла презентации с расширенным доступом.Boolean При значении true предписывает проигрывателю Flash Player исключить дочерние объекты этого экранного объекта из файла презентации с расширенным доступом. Значение по умолчанию равно false. Применяется к SWF-файлам целиком и контейнерам. name Позволяет назначить экранному объекту имя в файле презентации с расширенным доступом.String Позволяет назначить экранному объекту имя в файле презентации с расширенным доступом. Применяется к SWF-файлам целиком, контейнерам, кнопкам и тексту. Не путайте с не связанным свойством DisplayObject.name. Значение по умолчанию — пустая строка.

Во Flash Professional это свойство соответствует полю «Имя» на панели «Расширенный доступ».

noAutoLabeling При значении, равном true, отключает систему автоматических подписей по умолчанию для проигрывателя Flash Player.Boolean При значении true отключает систему автоматических подписей по умолчанию для проигрывателя Flash Player. Автоматические подписи могут вызвать обработку текстовых объектов внутри кнопок как имен кнопок и обработку текстовых объектов около текстового поля как имен текстового поля. Значение по умолчанию равно false. Применяется только к SWF-файлам целиком.

Значение свойства noAutoLabeling игнорируется, пока оно не будет определено перед первой проверкой SWF-файла средством обеспечения расширенного доступа. Если планируется установить для свойства noAutoLabeling значение true, необходимо сделать это в коде как можно раньше.

shortcut Указывает на сочетание клавиш, связанное с этим экранным объектом.String Указывает на сочетание клавиш, связанное с этим экранным объектом. Задайте данную строку только для элементов управления пользовательского интерфейса, которые ассоциированы с сочетанием клавиш. Применяется к контейнерам, кнопкам и тексту. Значение по умолчанию — пустая строка.

Примечание. Установка данного свойства не привязывает автоматически комбинации клавиш к данному объекту, необходимо это делать самостоятельно, например путем прослушивания события KeyboardEvent.

Синтаксис для данной строки использует длинные имена для управляющих клавиш и знак плюс (+), указывая на комбинацию клавиш. Примеры допустимых строк: Ctrl+F, Ctrl+Shift+Z и так далее.

silent При значении true исключает этот экранный объект из файла презентации с расширенным доступом.Boolean При значении true исключает этот экранный объект из файла презентации с расширенным доступом. Значение по умолчанию равно false. Применяется к SWF-файлам целиком, контейнерам, кнопкам и тексту.
ISearchableText Интерфейс ISearchableText может быть реализован объектами, содержащими текст, который должен быть доступным для поиска в Интернете. Интерфейс ISearchableText может быть реализован объектами, содержащими текст, который должен быть доступным для поиска в Интернете. searchText Получает текст поиска от компонента, реализующего интерфейс ISearchableText.String Получает текст поиска от компонента, реализующего интерфейс ISearchableText. Accessibility Класс Accessibility управляет связью со средствами чтения с экрана.Object Класс Accessibility управляет связью со средствами чтения с экрана. Чтение с экрана — это вспомогательная технология для пользователей с ослабленным зрением, предоставляющая аудиоверсию содержимого экрана. Методы класса Accessibility статические, то есть нет необходимости создавать экземпляр класса, чтобы воспользоваться его методами.

Поддержка в мобильных браузерах: этот класс не поддерживается в мобильных браузерах.

Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах, но не поддерживается на мобильных устройствах или в средах AIR для телевизионных устройств. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

Для получения или установки свойства расширенного доступа для определенного объекта, такого как кнопка, видеоролик или текстовое поле, используйте свойство DisplayObject.accessibilityProperties. Для определения, запущены ли проигрыватель или среда выполнения в среде, поддерживающей средства расширенного доступа, используйте свойство Capabilities.hasAccessibility.

Примечание. AIR 2 поддерживает программу чтения экрана JAWS 11 (или более поздней версии). Дополнительные сведения см. на странице http://www.adobe.com/accessibility/.

Ниже показано, как использовать примеры классов AccessibilityExample, CustomAccessibleButton, CustomSimpleButton и ButtonDisplayState для создания меню, соответствующего требованиям доступности веб-содержимого и совместимого с большинством программ чтения экрана. Для этого выполняются следующие задачи:
  1. Отслеживает свойство Accessibility.active для определения активности программы чтения экрана и наличия установленной связи проигрывателя с ней.
  2. Если свойство active возвращает значение true, вызывается метод updateProperties(), который применяет изменения специальных возможностей к кнопкам из данного примера.
  3. В примере вызывается метод flash.utils.setTimeout(), указывающий, что метод закрытия updateAccessibility() будет вызван через 2 секунды.

Примечание. Вызовите метод setTimeout(), прежде чем проверять Accessibility.active, чтобы дать проигрывателю Flash Player те 2 секунды, которые ему требуются для подключения к программе чтения экрана (если доступна). Если не будет выделено достаточно времени задержки, вызов setTimeout может возвратить значение false, даже если существует доступная программа чтения экрана.

В следующем примере показана обработка метода Accessibility.updateProperties() только в том случае, если вызов Accessibility.active возвращает true, что происходит лишь когда проигрыватель Flash Player подключен к активной программе чтения экрана. Если метод updateProperties вызывается без средства чтения с экрана, то вызывается исключение IllegalOperationError.

package { import flash.display.Sprite; import flash.accessibility.Accessibility; import flash.utils.setTimeout; public class AccessibilityExample extends Sprite { public static const BUTTON_WIDTH:uint = 90; public static const BUTTON_HEIGHT:uint = 20; private var gutter:uint = 5; private var menuLabels:Array = new Array("PROJECTS", "PORTFOLIO", "CONTACT"); private var menuDescriptions:Array = new Array("Learn more about our projects" , "See our portfolio" , "Get in touch with our team"); public function AccessibilityExample() { configureAssets(); setTimeout(updateAccessibility, 2000); } private function updateAccessibility():void { trace("Accessibility.active: " + Accessibility.active); if(Accessibility.active) { Accessibility.updateProperties(); } } private function configureAssets():void { var child:CustomAccessibleButton; for(var i:uint; i < menuLabels.length; i++) { child = new CustomAccessibleButton(); child.y = (numChildren * (BUTTON_HEIGHT + gutter)); child.setLabel(menuLabels[i]); child.setDescription(menuDescriptions[i]); addChild(child); } } } } import flash.accessibility.AccessibilityProperties; import flash.display.Shape; import flash.display.SimpleButton; import flash.display.Sprite; import flash.events.Event; import flash.text.TextFormat; import flash.text.TextField; class CustomAccessibleButton extends Sprite { private var button:SimpleButton; private var label:TextField; private var description:String; private var _name:String; public function CustomAccessibleButton(_width:uint = 0, _height:uint = 0) { _width = (_width == 0) ? AccessibilityExample.BUTTON_WIDTH : _width; _height = (_height == 0) ? AccessibilityExample.BUTTON_HEIGHT : _height; button = buildButton(_width, _height); label = buildLabel(_width, _height); addEventListener(Event.ADDED, addedHandler); } private function addedHandler(event:Event):void { trace("addedHandler: " + this._name); var accessProps:AccessibilityProperties = new AccessibilityProperties(); accessProps.name = this._name; accessProps.description = description; accessibilityProperties = accessProps; removeEventListener(Event.ADDED, addedHandler); } private function buildButton(_width:uint, _height:uint):SimpleButton { var child:SimpleButton = new CustomSimpleButton(_width, _height); addChild(child); return child; } private function buildLabel(_width:uint, _height:uint):TextField { var format:TextFormat = new TextFormat(); format.font = "Verdana"; format.size = 11; format.color = 0xFFFFFF; format.align = TextFormatAlign.CENTER; format.bold = true; var child:TextField = new TextField(); child.y = 1; child.width = _width; child.height = _height; child.selectable = false; child.defaultTextFormat = format; child.mouseEnabled = false; addChild(child); return child; } public function setLabel(text:String):void { label.text = text; this._name = text; } public function setDescription(text:String):void { description = text; } } class CustomSimpleButton extends SimpleButton { private var upColor:uint = 0xFFCC00; private var overColor:uint = 0xCCFF00; private var downColor:uint = 0x00CCFF; public function CustomSimpleButton(_width:uint, _height:uint) { downState = new ButtonDisplayState(downColor, _width, _height); overState = new ButtonDisplayState(overColor, _width, _height); upState = new ButtonDisplayState(upColor, _width, _height); hitTestState = new ButtonDisplayState(upColor, _width, _height); useHandCursor = true; } } class ButtonDisplayState extends Shape { private var bgColor:uint; private var _width:uint; private var _height:uint; public function ButtonDisplayState(bgColor:uint, _width:uint, _height:uint) { this.bgColor = bgColor; this._width = _width; this._height = _height; draw(); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, _width, _height); graphics.endFill(); } }
flash.display.DisplayObject.accessibilityPropertiesflash.system.Capabilities.hasAccessibilitySockethttp://www.adobe.com/accessibility/updateProperties Предписывает проигрывателю Flash Player применять любые изменения специальных возможностей, внесенные с помощью свойства DisplayObject.accessibilityProperties.Специальные возможности не поддерживаются этой версией проигрывателя Flash Player. Не вызывайте метод Accessibility.updateProperties(), если свойство flash.system.Capabilities.hasAccessibility равно false. IllegalOperationErrorflash.errors:IllegalOperationError Предписывает проигрывателю Flash Player применять любые изменения специальных возможностей, внесенные с помощью свойства DisplayObject.accessibilityProperties. Необходимо вызвать данный метод, чтобы изменения вступили в силу.

Если выполняется модификация свойств расширенного доступа для нескольких объектов, то необходим только один вызов метода Accessibility.updateProperties(), так как несколько вызовов может привести к уменьшению производительности и некорректной работе средства чтения с экрана.

activeflash.display.DisplayObject.accessibilityPropertiesflash.system.Capabilities.hasAccessibility
active Показывает, активна ли программа чтения с экрана в данный момент и поддерживает ли проигрыватель связь с ней.Boolean Показывает, активна ли программа чтения с экрана в данный момент и поддерживает ли проигрыватель связь с ней. Используйте данный метод, если в присутствии программы чтения с экрана требуется другое поведение приложения.

После того как этому свойству задается значение true, оно остается true на протяжении всего сеанса работы приложения. (Обычно когда пользователи включают программу чтения с экрана, то потом не выключают ее.)

Примечание. Прежде чем вызывать этот метод, подождите 1 или 2 секунды после запуска приложения AIR или после первого открытия окна Flash® Player, в котором отображается документ. В противном случае может быть возвращено значение false, даже если есть активный клиент расширенного доступа. Это происходит из-за механизма асинхронной передачи между клиентами расширенного доступа и Flash Player или AIR.

Для определения, запущен ли проигрыватель в окружении, поддерживающим средства чтения с экрана, используйте свойство Capabilities.hasAccessibility.
flash.system.Capabilities.hasAccessibilityupdateProperties()