Вопросы, связанные с видео
Инструкции по шифрованию видео
Adobe рекомендует соблюдать следующие инструкции для организации потоковой передачи видео на ТВ-устройства.
Видеокодек:
|
H.264, профиль Main или High, прогрессивное шифрование
|
Разрешение:
|
720i, 720p, 1080i или 1080p
|
Частота кадров:
|
24 кадра в секунду или 30 кадров в секунду
|
Аудиокодек:
|
AAC-LC или AC-3, 44,1 кГц, стерео, или эти многоканальные аудиокодеки: E-AC-3, DTS, DTS Express, DTS-HD High Resolution Audio или DTS-HD Master Audio
|
Общая скорость потока:
|
до 8 Мбит/с, в зависимости от пропускной способности
|
Скорость потока аудио:
|
до 192 Кбит/с
|
Попиксельные пропорции:
|
1 × 1
|
Для видео, передаваемого на устройство AIR for TV, Adobe рекомендует использовать кодек H.264.
Примечание.
AIR for TV также поддерживает видео, зашифрованное с помощью кодеков Sorenson Spark и On2 VP6. Однако оборудование не раскодирует и не отображает видео, закодированное с помощью этих кодеков. Вместо этого среда выполнения сама раскодирует и отображает видео, закодированное с помощью этих кодеков, с использованием программного обеспечения, в связи с чем видео воспроизводится с намного меньшей частотой кадров. Поэтому рекомендуется использовать кодек H.264, когда это возможно.
Класс StageVideo
AIR for TV поддерживает аппаратное раскодирование и отображение видео, закодированного с помощью H.264. Используйте класс StageVideo, чтобы включить эту функцию.
Дополнительные сведения см. в разделе «
Использование класса StageVideo для отображения с аппаратным ускорением
» в
руководстве разработчика по ActionScript 3.0
.
Для обеспечения наилучшей поддержки приложений AIR, в которых используется объект Video для видео, закодированного с помощью H.264, AIR for TV на
внутреннем уровне
использует объект StageVideo. Такой подход позволяет использовать преимущества аппаратного раскодирования и визуализации при отображении видео. Однако в отношении объекта Video действуют такие же ограничения, как для объекта StageVideo. Например, если приложение пытается повернуть видео, поворота не происходит, так как визуализацию видео выполняет оборудование, а не среда выполнения.
Тем не менее, при создании новых приложений рекомендуется использовать для видео, закодированного с помощью кодека H.264, объект StageVideo.
Пример использования класса StageVideo см. в разделе «
Поставка видео и содержимого для платформы Flash Platform на ТВ-устройствах
».
Рекомендации по поставке видео
На устройстве AIR for TV пропускная способность сети может колебаться при воспроизведении видео. Такие колебания возникают, например, когда кто-то другой начинает использовать то же самое подключение к Интернету.
Поэтому Adobe рекомендует, чтобы в системе поставки видео была реализована возможность адаптивной скорости передачи. Например, на серверной стороне адаптивную скорость передачи поддерживает Flash Media Server. На стороне клиента можно использовать Open Source Media Framework (OSMF).
Для передачи по сети видеосодержимого в приложения AIR for TV доступны следующие протоколы:
-
HTTP/HTTPS Dynamic Streaming (формат F4F, динамическая потоковая передача)
-
RTMP/RTMPE/RTMFP/RTMPT/RTMPTE Streaming (потоковая передача)
-
HTTP/HTTPS Progressive Download (последовательная загрузка)
Дополнительные сведения см. в следующих разделах:
Вопросы, связанные с аудио
ActionScript для воспроизведения звука в приложениях AIR for TV не отличается от других приложений AIR. Дополнительные сведения см. в разделе «
Работа со звуком
» в
Руководстве разработчика по ActionScript 3.0
.
В отношении поддержки многоканального аудио для профиля AIR for TV необходимо учитывать следующее.
-
AIR for TV поддерживает многоканальное аудио для видеороликов, последовательно загружаемых с сервера HTTP. Поддержка многоканального аудио для видеороликов, передаваемых потоком с Adobe Flash Media Server, пока недоступна.
-
И хотя AIR for TV поддерживает многие аудиокодеки, не все
устройства
AIR for TV поддерживают весь набор. Используйте метод
flash.system.Capabilities
hasMultiChannelAudio()
для проверки того, поддерживает ли устройство AIR for TV определенный многоканальный аудиокодек, например AC-3.
Например, рассмотри приложение, выполняющее прогрессивную загрузку видеофайла с сервера. На сервере содержатся другие видеофайлы H.264, поддерживающие другие многоканальные аудиокодеки. В приложении можно использовать метод
hasMultiChannelAudio()
для определения видеофайла, который необходимо запросить с сервера. Или можно отправить из приложения на сервер строку, содержащуюся в
Capabilities.serverString
. В строке обозначены доступные многоканальные аудиокодеки, благодаря чему сервер может выбрать подходящий видеофайл.
-
При использовании одного из аудиокодеков DTS в некоторых ситуациях
hasMultiChannelAudio()
возвращает значение
true
, хотя аудио DTS не воспроизводится.
В качестве примера рассмотрим проигрыватель Blu-ray с выходом S/PDIF, подключенный к старому усилителю. Старый усилитель не поддерживает DTS, а у выхода S/PDIF нет протокола для уведомления проигрывателя Blu-ray об этой ситуации. Если проигрыватель Blu-ray отправляет поток DTS старому усилителю, пользователь ничего не слышит. Поэтому при использовании DTS рекомендуется предусмотреть интерфейс, чтобы пользователь мог сообщить, что отсутствует звук. В таком случае приложение может переключиться на другой кодек.
В следующей таблице описаны ситуации использования разных аудиокодеков в приложениях AIR for TV. В таблице также перечислены условия, при которых на устройстве AIR for TV используются аппаратные ускорители для декодирования аудиокодека. Аппаратное ускорение позволяет повысить производительность и уменьшить нагрузку на центральный процессор.
Аудиокодек
|
Доступность на устройстве AIR for TV
|
Аппаратное декодирование
|
Ситуации использования аудиокодека
|
Дополнительная информация
|
AAC
|
Всегда
|
Всегда
|
В видео, закодированных с помощью H.264.
Для потоковой передачи аудио, например в службах потоковой передачи музыки через Интернет.
|
Если выполняется только потоковая передача аудио AAC, заключите аудиопоток в контейнер MP4.
|
mp3
|
Всегда
|
Нет
|
Для звуков в SWF-файлах приложений.
В видеороликах, закодированных с помощью Sorenson Spark или On2 VP6.
|
Видеоролик H.264, в котором используется аудио формата mp3, не воспроизводится на устройствах AIR for TV.
|
AC-3 (Dolby Digital)
E-AC-3 (Enhanced Dolby Digital)
DTS Digital Surround
DTS Express
DTS-HD High Resolution Audio
DTS-HD Master Audio
|
Проверка
|
Да
|
В видео, закодированных с помощью H.264.
|
Как правило, AIR for TV передает многоканальный аудиопоток на внешний аудио- или видеоприемник, на котором происходит декодирование и воспроизведение аудио.
|
Speex
|
Всегда
|
Нет
|
Получение эфирного голосового потока.
|
Видеоролик H.264, в котором используется аудио формата Speex, не воспроизводится на устройствах AIR for TV. Используйте Speex только для видеороликов, закодированных с помощью Sorenson Spark или On2 VP6.
|
NellyMoser
|
Всегда
|
Нет
|
Получение эфирного голосового потока.
|
Видеоролик H.264, в котором используется аудио формата NellyMoser, не воспроизводится на устройствах AIR for TV. Используйте NellyMoser только для видеороликов, закодированных с помощью Sorenson Spark или On2 VP6.
|
Примечание.
Некоторые видеофайлы содержат два аудиопотока. Например, видеофайл может содержать потоки AAC и AC3. AIR for TV не поддерживает такие видеофайлы и использование таких видеофайлов может привести к тому, что видео будет воспроизводиться без звука.
Аппаратное ускорение графики
Использование аппаратного ускорения графики
Устройства AIR for TV предоставляют аппаратное ускорение для двухмерных графических операций. Аппаратные ускорители графики на устройствах разгружают центральный процессор, выполняя следующие операции:
Использование такого аппаратного графического ускорения позволяет повысить производительность многих графических операций в приложениях AIR for TV. К таким операциям относятся:
Чтобы воспользоваться преимуществами аппаратного графического ускорения при выполнении таких операций, используйте один из следующих методов:
-
Установите для свойства
cacheAsBitmap
значение
true
в объектах MovieClip и других отображаемых объектах, содержимое которых преимущественно не изменяется. Затем примените скользящий переход, переход с затуханием и альфа-блендинг для этих объектов.
-
Используйте свойство
cacheAsBitmapMatrix
для отображаемых объектов, для которых требуется изменить масштаб или выполнить преобразование (выполните изменение позиции по оси x и y).
При использовании операций класса Matrix для масштабирования и преобразования операции выполняет аппаратный ускоритель устройства. В качестве альтернативного метода можно рассмотреть сценарий, когда изменяются размеры отображаемых объектов, для свойства
cacheAsBitmap
которого установлено значение
true
. При изменении размеров программное обеспечение среды выполнения перерисовывает растровое изображение. При перерисовке с помощью программного обеспечения производительность масштабирования ниже, чем при аппаратном ускорении с использованием операции Matrix.
Например, рассмотрите приложение, которое отображает изображение, разворачивающееся, когда пользователь выделяет его. Используйте операцию масштабирования Matrix несколько раз, чтобы создать иллюзию развертывания изображения. Однако в зависимости от размера исходного и конечного изображений качество итогового изображения может быть неприемлемым. Поэтому после операций развертывания выполняется сброс размеров отображаемого объекта. Поскольку для свойства
cacheAsBitmap
установлено значение
true
, программное обеспечение среды выполнения перерисовывает отображаемый объект, но только один раз, и отображает высококачественное изображение.
Примечание.
Обычно устройства AIR for TV не поддерживают поворот и наклон с использованием аппаратного ускорения. Поэтому если в классе Matrix указан поворот и наклон, AIR for TV выполняет все операции Matrix в программно обеспечении. Такие программные операции могут негативно сказаться на производительности.
-
Используйте класс BitmapData для создания пользовательского поведения кэширования растрового изображения.
Дополнительные сведения о кэшировании растровых изображений см. в следующих документах:
Управление графической памятью
Для выполнения графических операций с ускорением в аппаратных ускорителях используется специальная графическая память. Если приложение использует всю графическую память, оно работает медленнее, так как AIR for TV выполняет все графические операции с помощью программного обеспечения.
Порядок управления использованием графической памяти в приложении
-
После завершения работы с изображением или другими растровыми данными высвободите соответствующую графическую память. Для этого вызовите метод
dispose()
свойства
bitmapData
объекта Bitmap. Например:
myBitmap.bitmapData.dispose();
Примечание.
При высвобождении ссылки на объект BitmapData освобождение графической памяти происходит не сразу. Сборщик мусора среды выполнения в конечном итоге высвобождает графическую память, однако вызов метода
dispose()
предоставляет больший контроль.
-
Используйте PerfMaster Deluxe, приложение AIR от Adobe, чтобы лучше понять, как работает аппаратное графическое ускорение на целевых устройствах. Данное приложение показывает число кадров в секунду при выполнении различных операций. С помощью PerfMaster Deluxe можно сравнить разные реализации одной операции. Например, сравните перемещение растрового и векторного изображений. PerfMaster Deluxe можно загрузить со страницы «
Платформа Flash Platform для ТВ-устройств
».
Управление списком отображения
Чтобы сделать экранный объект невидимым, установите для свойства
visible
значение
false
. После этого объект по-прежнему находится в списке отображения, но среда AIR for TV не выполняет его визуализацию или вывод на экран. Этот метод рекомендуется использовать для объектов, которые часто появляются в области зрения и исчезают, так как это вызывает лишь незначительные затраты ресурсов на обработку. Однако присвоение свойству
visible
значения
false
не освобождает ресурсы объекта. Поэтому по завершении отображения объекта или по прошествии длительного времени после завершения работы с ним удалите объект из списка отображения. Кроме того, установите для всех ссылок на объект значение
null
. Эти действия позволяют сборщику мусора освободить ресурсы объекта.
Использование изображений PNG и JPEG
Форматы PNG и JPEG являются стандартными форматами изображений, используемых в приложениях. При использовании этих форматов изображений в приложениях AIR for TV учитывайте следующие моменты:
-
Раскодирование файлов JPEG в AIR for TV обычно выполняется с помощью аппаратного ускорения.
-
Раскодирование файлов PNG в AIR for TV обычно выполняется с помощью программного ускорения. Раскодирование PNG-файлов в программном обеспечении выполняется быстро.
-
PNG является единственным межплатформенным форматом растровых изображений, поддерживающим прозрачность (альфа-канал).
Поэтому эти форматы изображений в приложениях следует использовать следующим образом:
-
Используйте файлы JPEG для фотографий, чтобы воспользоваться при раскодировании преимуществами аппаратного ускорения.
-
Используйте PNG-файлы для элементов пользовательского интерфейса. Элементы пользовательского интерфейса могут иметь настройки прозрачности, и программное раскодирование дает достаточно высокую производительность для визуализации элементов графического интерфейса.
Рабочая область в приложениях AIR for TV
Если при создании приложений AIR for TV используется класс Stage, учитывайте следующие моменты:
-
разрешение экрана;
-
безопасная область просмотра;
-
режим масштабирования рабочей области;
-
выравнивание рабочей области;
-
состояние отображения рабочей области;
-
разработка для нескольких размеров экрана;
-
параметры качества рабочей области;
разрешение экрана.
В настоящее время ТВ-устройства обычно имеют одно из трех разрешений экрана: 540p, 720p или 1080p. Эти разрешения экрана дают следующие значения в классе ActionScript Capabilities:
Разрешение экрана
|
Capabilities.screenResolutionX
|
Capabilities.screenResolutionY
|
540p
|
960
|
540
|
720p
|
1280
|
720
|
1080p
|
1920
|
1080
|
При создании полноэкранных приложений AIR for TV жестко закодируйте
Stage.stageWidth
и
Stage.stageHeight
в соответствии с разрешением экрана устройства. Однако при создании полноэкранных приложений, которые могут работать на нескольких устройствах, используйте свойства
Capabilities.screenResolutionX
и
Capabilities.screenResolutionY
, чтобы задать размеры рабочей области.
Например:
stage.stageWidth = Capabilities.screenResolutionX;
stage.stageHeight = Capabilities.screenResolutionY;
Безопасная область просмотра
Безопасная область просмотра
на телевизоре — это область экрана с учетом отступов от границ экрана. Доступ является достаточно большим, чтобы конечный пользователь мог видеть всю область, не скрытую рамкой телевизора. Необходимость отступа определяется наличием этой физической рамки, которая может быть разной у разных производителей. Безопасная область просмотра предназначена для того, чтобы гарантировать область экрана, которая будет видимой. Безопасную область просмотра также называют
безопасной областью титров
.
Переразвертка
— это область экрана, которая скрыта рамкой.
Adobe рекомендует отступ в размере 7,5 % с каждой стороны экрана. Например:
При разработке приложений AIR for TV всегда учитывайте безопасную область просмотра.
-
Используйте всю область экрана для фона, например для фонового изображения или фонового цвета.
-
Для важных элементов приложения, таких как текст, графика, видео и элементы пользовательского интерфейса, включая кнопки, используйте только безопасную область просмотра.
В следующей таблице показаны размеры безопасной области просмотра для стандартных разрешений экрана с отступом 7,5 %.
Разрешение экрана
|
Ширина и высота безопасной области просмотра
|
Ширина отступа слева и справа
|
Высота отступа сверху и снизу
|
960 x 540
|
816 x 460
|
72
|
40
|
1280 x 720
|
1088 x 612
|
96
|
54
|
1920 x 1080
|
1632 x 918
|
144
|
81
|
Однако всегда рекомендуется динамически рассчитывать безопасную область просмотра. Например:
var horizontalInset, verticalInset, safeAreaWidth, safeAreaHeight:int;
horizontalInset = .075 * Capabilities.screenResolutionX;
verticalInset = .075 * Capabilities.screenResolutionY;
safeAreaWidth = Capabilities.screenResolutionX - (2 * horizontalInset);
safeAreaHeight = Capabilities.screenResolutionY - (2 * verticalInset);
Режим масштабирования рабочей области
Установите для свойства
Stage.scaleMode
значение
StageScaleMode.NO_SCALE
и прослушивайте события изменения размеров рабочей области.
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, layoutHandler);
Данный параметр устанавливает координаты рабочей области равными пиксельным координатам. В сочетании с состоянием отображения
FULL_SCREEN_INTERACTIVE
и выравниванием рабочей области
TOP_LEFT
данный параметр обеспечивает эффективное использование безопасной области просмотра.
В частности в полноэкранных приложениях этот режим масштабирования означает, что свойства
stageWidth
и
stageHeight
класса Stage соответствуют свойствам
screenResolutionX
и
screenResolutionY
класса Capabilities.
Кроме того, при изменении размера окна приложения содержимое рабочей области сохраняет заданный размер. Среда выполнения не выполняет автоматической компоновки или масташибрования. Кроме того, при изменении размеров окна среда выполнения отправляет событие
resize
класса Stage. Поэтому вы можете полностью управлять корректировкой содержимого приложения при его запуске и изменении размеров окна приложения.
Примечание.
Поведение
NO_SCALE
такое же, как в любом приложении AIR. Однако в приложениях AIR for TV, в которых используется этот параметр, крайне важно использовать безопасную область просмотра.
Выравнивание рабочей области
Установите для свойства
Stage.align
значение
StageAlign.TOP_LEFT
:
stage.align = StageAlign.TOP_LEFT;
При таком выравнивании точка начала координат
0,0
находится в левом верхнем углу экрана, что довольно удобно для размещения содержимого с использованием ActionScript.
В сочетании с режимом масштабирования
NO_SCALE
и состоянием отображения
FULL_SCREEN_INTERACTIVE
данный параметр обеспечивает эффективное использование безопасной области просмотра.
Состояние отображения рабочей области
Установите для параметра
Stage.displayState
полноэкранного приложения AIR for TV значение
StageDisplayState.FULL_SCREEN_INTERACTIVE
:
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
Данное значение предписывает приложению AIR развернуть рабочую область на весь экран, не отключая возможность ввода.
Adobe рекомендует использовать параметр
FULL_SCREEN_INTERACTIVE
. В сочетании с режимом масштабирования
NO_SCALE
и выравниванием рабочей области
TOP_LEFT
данный параметр обеспечивает эффективное использование безопасной области просмотра.
Поэтому для полноэкранных приложений в обработчике для события
ADDED_TO_STAGE
основного класса документа выполните следующие действия:
private function onStage(evt:Event):void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE, onResize);
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
}
Затем в обработчике события
RESIZE
выполните следующую операцию:
-
Сравните размеры разрешения экрана с шириной и высотой рабочей области. Если они совпадают, произошло событие
RESIZE
, так как состояние отображения экрана изменилось на
FULL_SCREEN_INTERACTIVE
.
-
Рассчитайте и сохраните размеры безопасной области просмотра и соответствующие отступы.
private function onResize(evt:Event):void
{
if ((Capabilities.screenResolutionX == stage.stageWidth) &&
(Capabilities.screenResolutionY == stage.stageHeight))
{
// Calculate and save safe viewing area dimensions.
}
}
Если рабочая область имеет размеры
Capabilities.screenResolutionX
и
screenResolutionY
, AIR for TV работает вместе с оборудованием для обеспечения самого высокого из возможных уровня точности видео и графики.
Примечание.
Точность, с которой графика и видео отображаются на ТВ-экране, может отличаться от значений
Capabilities.screenResolutionX
и
screenResolutionY
в зависимости от устройства, на котором работает среда AIR for TV. Например, компьютерная приставка к телевизору, на которой выполняется среда AIR for TV, может иметь разрешение экрана 1280 x 720, а подключенный телевизор — разрешение 1920 x 1080. Однако среда AIR for TV задает обеспечение самого высокого из возможных уровня точности аппаратным обеспечением. Поэтому в этом примере аппаратное обеспечение отображает видео 1080p с экранным разрешением 1920 x 1080.
Разработка для нескольких размеров экрана
Полноэкранные приложения AIR for TV можно создавать таким образом, чтобы они хорошо работали и смотрелись на разных устройствах AIR for TV. Выполните следующие действия.
-
Установите для свойств рабочей области
scaleMode
,
align
и
displayState
рекомендованные значения:
StageScaleMode.NO_SCALE
,
StageAlign.TOP_LEFT
и
StageDisplayState.FULL_SCREEN_INTERACTIVE
соответственно.
-
Задайте безопасную область просмотра на основе
Capabilities.screenResolutionX
и
Capabilities.screenResolutionY
.
-
Настройте размер и расположение содержимого в соответствии с шириной и высотой безопасной области просмотра.
Несмотря на то, что объекты содержимого имеют большой размер, особенно по сравнению с объектами в приложениях для мобильных устройств, применяются те же самые концепции динамического размещения, относительного позиционирования и адаптивного содержимого. Дополнительные сведения о поддержке этих концепций в ActionScript см. в статье «
Создание мобильного содержимого Flash для разных размеров экранов
».
Качество рабочей области
Свойство
Stage.quality
для приложения AIR for TV всегда имеет значение
StageQuality.High
. Его нельзя изменить.
Это свойство определяет качество визуализации всех объектов Stage.
Обработка ввода с пульта управления
Взаимодействие пользователей с приложением AIR for TV обычно осуществляется с помощью пульта управления. Однако нажатие клавиш следует обрабатывать таким же образом, как нажатие клавиш на клавиатуре в настольных приложениях. В частности, обрабатывается событие
KeyboardEvent.KEY_DOWN
. Дополнительные сведения см. в разделе «
Захват действий клавиатуры
» в
Руководстве разработчика по ActionScript 3.0
.
Клавиши на пульте управления сопоставлены с константами ActionScript. Например, клавиши навигации на пульте управления сопоставлены следующим образом:
Клавиша навигации на пульте управления
|
Константа ActionScript 3.0
|
Вверх
|
Keyboard.UP
|
Вниз
|
Keyboard.DOWN
|
Влево
|
Keyboard.LEFT
|
Вправо
|
Keyboard.RIGHT
|
OK или выбор
|
Keyboard.ENTER
|
В AIR 2.5 было добавлено много других констант Keyboard для поддержки ввода с пульта управления. Полный список констант см. в разделе «
Класс Keyboard
» в
Справочнике ActionScript 3.0 для платформы Adobe Flash Platform
.
Для того чтобы обеспечить работу приложения на как можно большем количестве устройств, Adobe рекомендует следующее:
-
По возможности используйте только клавиши навигации.
Разные пульты управления имеют разный набор клавиш. Однако обычно на всех пультах имеются клавиши навигации.
Например, на пульте управления плеера Blu-ray обычно нет клавиш переключения каналов. Даже клавиши для воспроизведения, паузы и остановки присутствуют не на всех пультах управления.
-
Используйте клавиши меню и информации, если приложению требуются другие клавиши помимо клавиш навигации.
Клавиши меню и информации являются наиболее распространенными клавишами на пульте управления.
-
Рассмотрите возможность использования универсальных пультов управления.
Даже когда создаются приложений для определенного устройства, следует учитывать, что во многих случаях не используются пульты управления, входящие в комплект устройства. Вместо этого используются универсальные пульты управления. Кроме того, при программировании универсальных пультов функции клавиш не всегда соответствуют их функциям на пульте управления устройства. Поэтому рекомендуется использовать только стандартные клавиши.
-
Убедитесь, что пользователь всегда сможет использовать для выхода одну из клавиш навигации.
Иногда в приложении требуется использовать клавиши, которые могут встречаться не на всех пультах управления. Если одна из клавиш навигации будет использоваться в качестве запасного выхода, приложение будет элегантно работать на всех устройствах.
-
Не требуйте ввода с помощью указывающего устройства, если нет уверенности в том, что целевое устройство AIR for TV имеет возможность ввода с помощью указывающего устройства.
Тогда как многие компьютерные приложения ожидают ввода с помощью мыши, большинство телевизоров не поддерживают ввод с помощью указывающего устройства. Поэтому если вы преобразуете компьютерные приложения, чтобы их можно было запускать на ТВ-устройствах, не забудьте изменить приложение, чтобы исключить ввод с помощью мыши. В этом случае необходимо изменить обработку событий и инструкции для пользователя. Например, в окне запуска приложения не должно быть текста «Нажмите, чтобы начать».
Управление фокусом
Когда в настольных приложениях фокус имеет элемент пользовательского интерфейса, он является целевым объектом событий ввода пользователя, таких как события клавиатуры и мыши. Кроме того, приложение выделяет находящийся в фокусе элемент интерфейса. Управление фокусом в приложениях AIR for TV отличается от управления фокусом в настольных приложениях. Это связано со следующими причинами:
-
В настольных приложениях для перемещения фокуса в следующий элемент пользовательского интерфейса часто используется клавиша табуляции. В приложениях AIR for TV клавиша табуляции не используется. На пультах управления клавиши табуляции обычно нет. Поэтому использовать свойство
tabEnabled
объекта DisplayObject для управления фокусом, как в настольных приложениях, не получится.
-
В настольных приложениях часто предполагается, что для перемещения фокуса между элементами интерфейса, используется мышь.
Поэтому в приложении необходимо выполнить следующее:
-
Добавьте прослушиватель события для объекта Stage, который будет прослушивать события Keyboard, такие как
KeyboardEvent.KEY_DOWN
.
-
Разработайте логику приложения, чтобы определить, какой интерфейс элемента следует выделять для конечного пользователя. Не забудьте выделить элемент интерфейса при запуске приложения.
-
В соответствии с логикой приложения отправьте событие Keyboard, которое получил объект Stage, в соответствующий объект элемента интерфейса.
Кроме того, для назначения фокуса для элементов интерфейса можно использовать методы
Stage.focus
и
Stage.assignFocus()
. Затем можно добавить прослушиватель событий для этого объекта DisplayObject, чтобы он получал события клавиатуры.
Разработка пользовательского интерфейса
Чтобы пользовательский интерфейс приложений AIR for TV хорошо работал на телевизионных устройствах, следует соблюдать рекомендации в отношении следующих критериев:
-
способность приложения к реагированию;
-
удобство приложения в использовании;
-
личность и ожидания пользователя.
Способность к реагированию
Воспользуйтесь следующими советами, чтобы обеспечить максимальную скорость реагирования приложений AIR for TV.
-
Размер исходного SWF-файла приложения должен быть как можно меньше.
В исходном SWF-файле приложения загружайте только ресурсы, которые требуются для запуска приложения. Например, загружайте только изображение окна запуска приложения.
Данные рекомендации относятся также и к настольным приложениям AIR, однако намного важнее их соблюдать на устройствах AIR for TV. Например, вычислительная мощность устройств AIR for TV существенно отличается от производительности настольных компьютеров. Кроме того, приложения хранятся во flash-памяти, скорость доступа к которой ниже, чем для жестких дисков настольных компьютеров.
-
Добейтесь, чтобы приложение работало со скоростью, по крайней мере, 20 кадров в секунду.
Разработайте графику таким образом, чтобы достичь этой цели. Сложность графических операций может привести к снижению частоты кадров. Советы по повышению производительности см. в разделе «
Оптимизация производительности для платформы Adobe Flash Platform
».
Примечание.
Графическое оборудование устройств AIR for TV, обычно обновляет экран с частотой 60 Гц или 120 Гц (60 или 120 раз в секунду). Оборудование выполняет сканирование обновлений рабочей области, например со скорость 30 кадров в секунду или 60 кадров в секунду при частоте обновления 60 Гц и 120 Гц. Однако возможность достижения более высокой частоты кадров зависит от сложности графических операций приложения.
-
Обновляйте экран в течение 100-200 миллисекунд после ввода пользователя.
Пользователи теряют терпение, если обновление выполняется долго, что может приводить к многократному повторному нажатию клавиш.
Удобство в использовании
Пользователи приложений AIR for TV находятся в среде «гостиной». Они сидят примерно в 3 метрах от телевизора. Иногда свет в комнате может быть темно. Для ввода они обычно используют пульт управления. Приложением может пользоваться несколько человек, иногда они работают вместе, иногда — поочередно.
Поэтому чтобы пользовательский интерфейс было удобно использовать на ТВ-устройствах, необходимо учесть следующие моменты:
-
Элементы пользовательского интерфейса должны иметь достаточно большой размер.
При разработке текста, кнопок и других элементов интерфейса учитывайте, что пользователи находятся в другом конце комнаты. Все элементы должны быть видимыми и легко читаемыми на расстоянии, например, 3 метра. Не загромождайте экран, рассчитывая на то, что он имеет большой размер.
-
Используйте хороший контраст, чтобы содержимое было хорошо видно и легко читалось в другом конце комнаты.
-
Элементы интерфейса, находящиеся в фокусе, следует выделить, чтобы фокус был легко заметен.
-
Используйте движение только в случаях необходимости. Например, хорошо может работать переход со скольжением с одного экрана на другой. Однако движение может отвлекать, если оно не помогает пользователю при навигации или если оно не требуется для работы приложения.
-
Всегда предусматривайте очевидный способ возврата с помощью элементов интерфейса.
Дополнительные сведения об использовании пульта управления см. в разделе «
Обработка ввода с пульта управления
».
Личность и ожидания пользователя.
Помните, что пользователи приложений AIR for TV обычно ожидают получить развлекательную и расслабляющую среду, свойственную телевизионным устройствам. Они не обязательно будут знакомы с компьютерами и технологиями.
Поэтому при разработке приложений AIR for TV необходимо учитывать следующее:
-
Не используйте технические термины.
-
Избегайте модульных диалогов.
-
Используйте неформальные инструкции, подходящие для условий гостиной, а не для рабочей или технической среды.
-
Используйте графику, которая обеспечит высокое качество изображения на ТВ, соответствующее ожиданиям зрителей.
-
Реализуйте пользовательский интерфейс, который легко работает с пультом дистанционного управления. Не применяйте пользовательский интерфейс или элементы дизайна, которые больше подходят для компьютерного или мобильного приложения. Например, пользовательские интерфейсы на компьютерах или мобильных устройствах часто содержат кнопки для нажатия с помощью мыши или пальца.
Шрифты и текст
В приложении AIR for TV можно использовать шрифты устройства или встроенные шрифты.
Шрифты устройства — это шрифты, которые установлены на устройстве. На всех устройствах AIR for TV имеются следующие шрифты устройств:
Имя шрифта
|
Описание
|
_sans
|
Шрифт устройства
_sans
— это шрифт типа sans-serif. Шрифт устройства
_sans
, установленный на всех устройствах AIR for TV, — это Myriad Pro. Обычно шрифт sans-serif выглядит на телевизорах лучше, чем шрифты serif, вследствие большого расстояния от экрана.
|
_serif
|
Шрифт устройства
_serif
— это шрифт типа serif. Шрифт устройства
_serif
, установленный на всех устройствах AIR for TV, — это Minion Pro.
|
_typewriter
|
Шрифт устройства
_typewriter
— это моноширинный шрифт. Шрифт устройства
_typewriter
, установленный на всех устройствах AIR for TV, — это Courier Std.
|
На всех устройствах AIR for TV имеются следующие азиатские шрифты устройств:
Имя шрифта
|
Язык
|
Категория типа шрифта
|
Код языка
|
RyoGothicPlusN-Regular
|
Японский
|
sans
|
ja
|
RyoTextPlusN-Regular
|
Японский
|
serif
|
ja
|
AdobeGothicStd-Light
|
Корейский
|
sans
|
ko
|
AdobeHeitiStd-Regular
|
Китайский (упрощенный)
|
sans
|
zh_CN
|
AdobeSongStd-Light
|
Китайский (упрощенный)
|
serif
|
zh_CN
|
AdobeMingStd-Light
|
Китайский (традиционный)
|
serif
|
zh_TW и zh_HK
|
Это шрифты устройств AIR for TV:
-
доступны в библиотеке Adobe® Type Library;
-
хорошо смотрятся на ТВ-устройствах;
-
предназначены для титров в видео;
-
являются контурами шрифтов, а не растровыми шрифтами.
Примечание.
Производители устройств часто устанавливают на устройствах другие шрифты. Такие шрифты производителей дополняют шрифты устройств AIR for TV.
Adobe предоставляет приложение FontMaster Deluxe, которое позволяет отобразить все шрифты, доступные на устройстве. Приложение доступно на странице «
Платформа Flash Platform для ТВ-устройств
».
В приложения AIR for TV также можно встраивать шрифты. Дополнительные сведения о встроенных шрифтах см. в разделе «
Расширенная визуализация текста
» в
Руководстве разработчика по ActionScript 3.0
.
Рекомендации Adobe при использовании текстовых полей TLF:
-
Используйте текстовые поля TLF для текста на азиатских языках, чтобы воспользоваться преимуществами локали, в которой запускается приложение. Задайте свойство
locale
объекта TextLayoutFormat, связанного с объектом TLFTextField. Инструкции по определению текущей локали см. в разделе «
Выбор локали
» в
Руководстве разработчика по ActionScript 3.0
.
-
Укажите имя шрифта с помощью свойства
fontFamily
объекта TextLayoutFormat, если используется шрифт, не являющийся шрифтом устройств AIR for TV. Среда AIR for TV использует шрифт, если он доступен на устройстве. Если запрошенного шрифта на устройстве нет, среда AIR for TV заменяет его на подходящий шрифт устройства в соответствии с настройками параметра
locale
.
-
Установите значение
_sans
,
_serif,
или
_typewriter
для свойства
fontFamily
, а также настройте свойство
locale
, чтобы среда AIR for TV могла выбрать правильный шрифт устройства. В зависимости от локали среда AIR for TV выбирает шрифт из списка азиатских или неазиатских шрифтов устройства. Данные настройки позволяют легко автоматизировать выбор правильного шрифта для четырех основных азиатских локалей и английского языка.
Примечание.
Если для текста на азиатском языке используется классическое текстовое поле, для корректной визуализации текста необходимо указать имя шрифта устройства AIR for TV. Если вам известно, что на целевом устройстве установлен другой шрифт, можно также указать имя этого шрифта.
Моменты, которые следует учитывать в отношении производительности приложения:
-
Классические текстовые поля обеспечивают более высокую производительность, чем текстовые поля TLF.
-
Для классических текстовых полей используются растровые шрифты, которые обеспечивают максимальную производительность.
Растровые шрифты предоставляют растровое изображение для каждого символа, тогда как контурные шрифты предоставляют только данные о контурах вокруг каждого символа. Как шрифты устройства, так и встроенные шрифты могут быть растровыми.
-
Если вы указали шрифт устройства, убедитесь, что он установлен на целевом устройстве. Если шрифт не установлен на устройстве, среда AIR for TV выберет другой шрифт из списка установленных. Однако это поведение снижает производительность приложения.
-
Как и в случае любых других отображаемых объектов, если объект TextField изменяется редко, установите для свойства объекта
cacheAsBitmap
значение
true
. Это позволит повысить производительность при таких преобразованиях, как затухание, скольжение и альфа-наложение. Для масштабирования и преобразования используйте
cacheAsBitmapMatrix
. Дополнительные сведения см. в разделе
Аппаратное ускорение графики
.
Безопасность файловой системы
Приложения AIR for TV являются приложениями AIR, поэтому они имеют доступ к файловой системе устройства. Однако для устройств «в гостиной» крайне важно, чтобы приложения не имели доступа к системным файлам устройства и файлам других приложений. Пользователи телевизионных и соответствующих устройств не ожидают и не допускают возможности сбоев в работе устройства: в конце концов они смотрят телевизор.
Поэтому доступ приложений AIR for TV к файловой системе устройства ограничен. При использовании ActionScript 3.0 приложение может обращаться только к определенным каталогам (и их подкаталогам). Кроме того, имена каталогов, которые используются в ActionScript, не являются реальными именами каталогов на устройстве. Этот дополнительный уровень позволяет защитить приложения AIR for TV от злоумышленного и случайного обращения к локальным файлам, которые не принадлежат приложениям.
Дополнительные сведения см. в разделе «
Вид каталога приложений AIR for TV
».
Изолированная программная среда приложения AIR
Цикл разработки приложений
В отличие от настольных приложений пользователь не может закрыть окно, в котором выполняется приложение AIR for TV. Поэтому в пользовательском интерфейсе необходимо предусмотреть механизм выхода из приложения.
Обычно устройство разрешает пользователю безусловный выход из приложения по нажатию клавиши выхода на пульте управления. Однако среда AIR for TV не отправляет в приложение событие
flash.events.Event.EXITING
. Поэтому необходимо регулярно сохранять состояние приложения, чтобы при последующем запуске его можно было восстановить.
Файлы cookie HTTP
AIR for TV поддерживает постоянные файлы cookie и файлы cookie сеанса HTTP. AIR for TV сохраняет файлы cookie для каждого приложения AIR в специальной папке:
/app-storage/<app id>/Local Store
Именем файла cookie является
cookies
.
Примечание.
Среда AIR на других устройствах, таких как настольные устройства, не сохраняет файлы cookie отдельно для каждого приложения. Хранилище файлов cookie приложения поддерживает модель безопасности приложения и системы AIR for TV.
Используйте свойство ActionScript
URLRequest.manageCookies
следующим образом:
-
Задайте для свойства
manageCookies
значение
true
. Данное значение установлено по умолчанию. Это означает, что среда AIR for TV автоматически добавляет файлы cookie для запросов HTTP и запоминает файлы cookie, полученные в ответе HTTP.
Примечание.
Даже когда для свойства
manageCookies
установлено значение
true
, приложение может вручную добавлять файлы cookie для запросов HTTP с помощью
URLRequest.requestHeaders
. Если эти файлы cookie должны соответствовать файлам cookie, которыми управляет среда AIR for TV, запрос содержит два файла cookie с одним именем. Значения двух файлов cookie могут отличаться.
-
Задайте для свойства
manageCookies
значение
false
. Это значение означает, что приложение выполняет отправку файлов cookie по HTTP-запросам и запоминает файлы cookie, полученные в ответе HTTP.
Дополнительные сведения см. в документе
URLRequest
.
|
|
|