Adobe Flash Platform * Установка властивостей робочої області

  1. Управління частотою кадрів при відтворенні
  2. Налаштування режиму масштабування робочої області для вікон AIR
  3. Робота в повноекранному режимі
  4. Включення повноекранного режиму в Flash Player
  5. Включення повноекранного інтерактивного режиму в програвачі Flash Player 11.3 і пізніших версій
  6. Повноекранний режим і масштабування
  7. Підтримка клавіатури в повноекранному режимі
  8. Підтримка миші в повноекранному режимі
  9. Апаратне масштабування в повноекранному режимі
  10. Режими вікна: прямий і суміщений з використанням графічного процесора

Клас Stage переопределяет більшість властивостей і методів класу DisplayObject

Клас Stage переопределяет більшість властивостей і методів класу DisplayObject. При виклику перевизначених властивостей або методів Flash Player і AIR видають виняток. Наприклад, об'єкт Stage позбавлений властивостей x або y, оскільки його положення в якості основного контейнера додатки фіксоване. Властивості x і y пов'язані з позицією екранного об'єкта по відношенню до його контейнеру. Оскільки Stage не міститься в іншому контейнері екранного об'єкта, ці властивості незастосовні.

Примітка. Деякі властивості і методи класу Stage доступні тільки для екранних об'єктів, які знаходяться в тій же ізольованою програмному середовищі, що і завантажений SWF-файл. Додаткові відомості див. У розділі « Безпека робочої області ».

Управління частотою кадрів при відтворенні

Управління масштабом робочої області

Коли змінюється розмір частини екрану, займаної програвачами Flash Player або AIR, вміст середовища виконання автоматично коригується відповідно до змін. Властивість scaleMode класу Stage визначає метод коригування вмісту. Це властивість може приймати 4 різних значення, які визначаються як константи в класі flash.display.StageScaleMode:

  • StageScaleMode.EXACT_FIT змінює масштаб SWF для заповнення робочої області з новими розмірами без урахування вихідного співвідношення сторін. Коефіцієнти масштабування по ширині і висоті можуть відрізнятися, тому якщо співвідношення сторін зміниться, вміст може виглядати стисненим або розтягнутим.

  • StageScaleMode.SHOW_ALL змінює масштаб SWF для заповнення всієї робочої області з новими розмірами без зміни співвідношення сторін вмісту. При цьому режимі масштабування відображається весь вміст, але можлива поява кордонів «letterbox», наприклад чорних смуг, які з'являються при перегляді широкоекранного фільму на стандартному телевізорі.

  • StageScaleMode.NO_BORDER змінює масштаб SWF для заповнення всієї робочої області з новими розмірами без зміни співвідношення сторін вмісту. Даний режим масштабування дозволяє повністю використовувати область відображення робочої області, проте вміст при цьому може обрізатися.

  • StageScaleMode.NO_SCALE не змінює масштаб SWF. Якщо нова робоча область має менші розміри, вміст обрізається. Якщо вона має великі розміри, доданий простір буде порожнім.

    У режимі масштабування StageScaleMode.NO_SCALE і ні в якому іншому властивості Width і Height класу Stage можна використовувати для визначення фактичних розмірів зміненої робочої області в пікселах. При інших режимах масштабування властивості stageWidth і stageHeight завжди відображають вихідну довжину і ширину SWF-файлу. Крім того, коли властивості scaleMode присвоєно значення StageScaleMode.NO_SCALE, а розмір SWF-файлу змінюється, вирушає подія resize класу Stage, що дозволяє внести коригування відповідним чином.

    Отже, якщо scaleMode має значення StageScaleMode.NO_SCALE, це дозволяє при бажанні точніше управляти коригуванням вмісту екрану, що залежить від зміни розмірів екрану. Наприклад, в SWF-файлі, що містить відеоролик і рядок управління, може знадобитися зберігати розмір рядка управління при зміні розміру робочої області. При цьому розмір вікна показу відеофайлу змінюється відповідно до зміни розміру робочої області. Це демонструється в наступному прикладі.

    // mainContent is a display object containing the main content; // it is positioned at the top-left corner of the Stage, and // it should resize when the SWF resizes. // controlBar is a display object (eg a Sprite) containing several // buttons; it should stay positioned at the bottom-left corner of the // Stage (below mainContent) and it should not resize when the SWF // resizes. import flash.display.Stage; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; var swfStage: Stage = mainContent.stage; swfStage.scaleMode = StageScaleMode.NO_SCALE; swfStage.align = StageAlign.TOP_LEFT; swfStage.addEventListener (Event.RESIZE, resizeDisplay); function resizeDisplay (event: Event): void {var swfWidth: int = swfStage.stageWidth; var swfHeight: int = swfStage.stageHeight; // Resize the main content area var newContentHeight: Number = swfHeight - controlBar.height; mainContent.height = newContentHeight; mainContent.scaleX = mainContent.scaleY; // Reposition the control bar. controlBar.y = newContentHeight; }

Налаштування режиму масштабування робочої області для вікон AIR

Властивість scaleMode об'єкта Stage визначає, як робоча область масштабування та обрізка дочірні екранні об'єкти при зміні розмірів вікна. У AIR слід використовувати тільки режим noScale. В цьому режимі робоча область, що не масштабується. Замість цього розмір робочої області змінюється безпосередньо разом з межами вікна. При зменшенні розміру вікна, об'єкти можуть обрізатися.

Режими масштабування робочої області призначені для використання в таких середовищах, як веб-браузер, де не завжди є можливість керувати розміром або співвідношенням сторін робочої області. Ці режими дозволяють вибирати найменш спотворений варіант, коли робоча область не відповідає ідеальному розміру або співвідношенню сторін вікна програми. У додатку AIR ви завжди керуєте робочою областю, тому в більшості випадків повторне включення інформації або просто коригування розмірів вікна дадуть кращі результати, ніж масштабування робочої області.

У браузері і в початковому вікні AIR співвідношення між розміром вікна і початковим фактором масштабування зчитується з завантаженого SWF-файлу. Однак при створенні об'єкта NativeWindow середу AIR вибирає довільне співвідношення між розміром вікна мул фактором масштабування 72: 1. Таким чином, якщо розмір вікна становить 72x72 пікселя, квадрат 10x10, що додається в вікно, промальовується з правильним розміром 10x10 пікселів. Однак якщо розмір вікна становить 144x144 пікселя, квадрат 10x10 масштабується до розміру 20x20 пікселів. Якщо все ж потрібно використовувати режим scaleMode, а не noScale для робочої області вікна, в якості компенсації можна задати для всіх екранних об'єктів у вікні фактор масштабування 72 пікселів до поточної ширині і висоті робочої області. Наприклад, наступний код обчислює необхідний фактор масштабування для екранного об'єкта з ім'ям client.

if (newWindow.stage.scaleMode! = StageScaleMode.NO_SCALE) {client.scaleX = 72 / newWindow.stage.stageWidth; client.scaleY = 72 / newWindow.stage.stageHeight; }

Примітка. Вікна Flex і HTML автоматично ставлять властивості scaleMode об'єкта Stage значення noScale. Зміна властивості scaleMode заважає роботі механізмів автоматичної компонування, що застосовуються у вікнах цих типів.

Робота в повноекранному режимі

Повноекранний режим дозволяє робочої області ролика заповнити весь екран без будь-яких меж контейнера або меню. Властивість класу Stage displayState використовується для входу і виходу з повноекранного режиму показу SWF-файлу. Властивості displayState можна привласнити одне зі значень, визначених для констант в класі flash.display.StageDisplayState. Щоб включити повноекранний режим, надайте властивості displayState значення StageDisplayState.FULL_SCREEN:

stage.displayState = StageDisplayState.FULL_SCREEN;

Щоб включити повноекранний інтерактивний режим (нова можливість Flash Player 11.3), задайте властивість displayState зі значенням StageDisplayState.FULL_SCREEN_INTERACTIVE:

stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;

У Flash Player до повноекранного режиму можна перейти за допомогою ActionScript тільки у відповідь на клацання мишею (включаючи праву кнопку) або натискання клавіші. Вміст AIR, яке виконується в ізольованій програмному середовищі, не вимагає переходу до повноекранного режиму у відповідь на жест користувача.

Щоб вимкнути повноекранний режим, надайте властивості displayState значення StageDisplayState.NORMAL.

stage.displayState = StageDisplayState.NORMAL;

Крім того, користувач може виходити з повноекранного режиму шляхом зміщення фокусу на інше вікно або за допомогою одного з декількох комбінацій клавіш: Esc (всі платформи), Control-W (Windows), Command-W (Mac) або Alt-F4 (Windows) .

Включення повноекранного режиму в Flash Player

Для включення повноекранного режиму для SWF-файлу, вбудованого в HTML-сторінку, код HTML, вбудований в Flash Player, повинен включати тег param, атрибут embed з ім'ям allowFullScreen і значення true, як зазначено нижче:

<Object> ... <param name = "allowFullScreen" value = "true" /> <embed ... allowFullScreen = "true" /> </ object>

В інструменті розробки Flash виберіть «Файл»> «Параметри публікації» і у вікні, на вкладці «HTML» вкажіть шаблон «Тільки Flash - дозволити повноекранний режим».

В Flex перевірте, що шаблон HTML включає теги <object> та <embed>, що підтримують повноекранний режим.

Якщо на веб-сторінці при створенні тегів для вбудовування SWF-файлів використовується мова JavaScript, то для додавання тега allowFullScreen param і атрибута необхідно лише змінити JavaScript. Наприклад, якщо у вашій HTML-сторінці використовується функція AC_FL_RunContent () (яка застосовується на сторінках HTML, створених за допомогою Flash Professional і Flash Builder), необхідно в такий спосіб додати параметр allowFullScreen до цього виклику функції:

AC_FL_RunContent (... 'allowFullScreen', 'true', ...); // end AC code

Це не відноситься до SWF-файлів, запущеним в автономній програмі Flash Player.

Примітка. Якщо для режиму вікна (wmode в HTML) вибрати значення «Непрозорий безвіконні» (opaque) або «Прозорий безвіконні» (transparent), повноекранний режим для вікна завжди буде непрозорим.

Існують також обмеження системи безпеки на використання повноекранного режиму Flash Player в браузері. Ці обмеження описані в розділі « Безпека ».

Включення повноекранного інтерактивного режиму в програвачі Flash Player 11.3 і пізніших версій

Програвач Flash Player 11.3 і пізніших версій підтримує повноекранний інтерактивний режим, який забезпечує повну підтримку для всіх клавіш (крім Esc, яка завершує роботу в повноекранному інтерактивному режимі). Редакція інтерактивний режим корисний в ігрових додатках (наприклад, для включення чату в багатокористувацької грі або елементів управління клавіатури WASD в стрілялках з видом від першої особи).

Для включення повноекранного інтерактивного режиму для SWF-файлу, вбудованого в HTML-сторінку, код HTML, вбудований в Flash Player, повинен включати тег param, атрибут embed з ім'ям allowFullScreenInteractive і значення true, як зазначено нижче:

<Object> ... <param name = "allowFullScreenInteractive" value = "true" /> <embed ... allowFullScreenInteractive = "true" /> </ object>

В інструменті розробки Flash виберіть «Файл»> «Параметри публікації» і у вікні, на вкладці «HTML» вкажіть шаблон «Тільки Flash - дозволити повноекранний інтерактивний режим».

У Flash Builder і Flex переконайтеся, що шаблони HTML містять теги <object> та <embed>, що підтримують повноекранний інтерактивний режим.

Якщо на веб-сторінці при створенні тегів для вбудовування SWF-файлів використовується мова JavaScript, то для додавання тега allowFullScreenInteractive param і атрибута необхідно лише змінити JavaScript. Наприклад, якщо у вашій HTML-сторінці використовується функція AC_FL_RunContent () (яка застосовується на сторінках HTML, створених за допомогою Flash Professional і Flash Builder), необхідно в такий спосіб додати параметр allowFullScreenInteractive до цього виклику функції:

AC_FL_RunContent (... 'allowFullScreenInteractive', 'true', ...); // end AC code

Це не відноситься до SWF-файлів, запущеним в автономній програмі Flash Player.

Повноекранний режим і масштабування

Властивості Stage.fullScreenHeight і Stage.fullScreenWidth повертають висоту і ширину монітора, які використовуються при переході до розміру на весь екран, якщо він виконується негайно. Ці значення можуть бути неправильними, якщо користувач має можливість перемістити браузер з одного монітора на інший після отримання цих значень, але до переходу в повноекранний режим. Якщо ці значення були отримані в тому ж обробнику подій, де властивості Stage.displayState було присвоєно значення StageDisplayState.FULL_SCREEN, то значення є вірними. При наявності декількох підключених моніторів, вміст SWF повністю займе тільки один з них. Flash Player і AIR використовують метрику, щоб визначити, який з моніторів містить велику частину SWF-файлу, вибираючи цей монітор для повноекранного режиму. Властивості fullScreenHeight і fullScreenWidth тільки відображають розмір монітора, що використовується для повноекранного режиму. Додаткові відомості див. В описах властивостей Stage.fullScreenHeight і Stage.fullScreenWidth в Довідник ActionScript® 3.0 для платформи Adobe® Flash® Platform .

Масштабування робочої області в повноекранному режимі протікає так само, як і в звичайному режимі. Масштабування управляється властивістю scaleMode класу Stage. Якщо властивості scaleMode присвоєно значення StageScaleMode.NO_SCALE, властивості stageWidth і stageHeight робочої області змінюються, відображаючи розмір області екрану, зайнятої SWF-файлом (в даному випадку це весь екран). При перегляді в браузері параметр HTML керує цією настройкою.

Подія fullScreen класу Stage використовується, щоб дізнатися, включений або вимкнений повноекранний режим, і зреагувати відповідним чином. Наприклад, може знадобитися змінити становище, додати або видалити елементи з екрану при переході до повноекранного режиму або виході з нього як у цьому прикладі:

import flash.events.FullScreenEvent; function fullScreenRedraw (event: FullScreenEvent): void {if (event.fullScreen) {// Remove input text fields. // Add a button that closes full-screen mode. } Else {// Re-add input text fields. // Remove the button that closes full-screen mode. }} MySprite.stage.addEventListener (FullScreenEvent.FULL_SCREEN, fullScreenRedraw);

Як показано в цьому коді, об'єкт події для події fullScreen є екземпляром класу flash.events.FullScreenEvent, що включає властивість fullScreen, яке вказує, чи включений повноекранний режим (true) чи ні (false).

Підтримка клавіатури в повноекранному режимі

При запуску Flash Player в браузері в повноекранному режимі всі сценарії ActionScript, пов'язані з використанням клавіатури, наприклад події клавіатури або введення тексту в екземпляри TextField, відключаються. Винятками (клавіші, які залишаються доступними) є:

  • Клавіші, що не містять букв або цифр, а саме стрілки, пробіл і клавіша табуляції

  • Поєднання клавіш, використовувані для виходу з повноекранного режиму: Esc (Windows і Mac), Control-W (Windows), Command-W (Mac), і Alt-F4

Дані обмеження не діють для вмісту SWF, виконуваного в автономному Flash Player або в додатку AIR. AIR підтримує інтерактивний повноекранний режим, який допускає введення з клавіатури.

Підтримка миші в повноекранному режимі

За замовчуванням події миші в повноекранному режимі відбуваються таким же чином, як і не в повноекранному режимі. Однак в повноекранному режимі можна встановити необов'язкове властивість Stage.mouseLock, щоб заблокувати миші. При блокуванні миші курсор відключається, і включається несвязанное рух миші.

Примітка. Блокування миші можна включити тільки в повноекранному режимі для настільних додатків. При установці блокування не в повноекранному режимі або для додатків на мобільних пристроях буде виникати виняток.

Блокування миші автоматично відключається і курсор миші знову стає видимим в наступних випадках:

  • Можна не вмикати повноекранний режим натисканням клавіш Escape (всі платформи), Control-W (Windows), Command-W (Mac) або Alt-F4 (Windows).

  • Вікно додатка втрачає фокус.

  • Будь-призначений для користувача інтерфейс налаштувань є видимим, включаючи всі діалогові вікна конфіденційності.

  • Показано власне діалогове вікно, таке як діалогове вікно відправки файлу.

Події, пов'язані з рухом миші, такі як mouseMove, використовують клас MouseEvent для представлення об'єкта події. Якщо блокування миші відключена, для визначення положення миші використовуйте властивості MouseEvent.localX і MouseEvent.localY. Якщо блокування миші включена, для визначення положення миші використовуйте властивості MouseEvent.movementX і MouseEvent.movementY. Властивості movementX іmovementY містять зміни положення миші, що відбулися з останньої події, замість абсолютних координат положення миші.

Апаратне масштабування в повноекранному режимі

Властивість fullScreenSourceRect класу Stage можна використовувати для того, щоб змусити Flash Player або AIR масштабувати певну зону робочої області, перевівши її в режим повноекранного показу. При наявності такої можливості Flash Player і AIR використовують апаратне масштабування засобами доступного в системі користувача відеоадаптера, що дозволяє відображати вміст швидше, ніж при використанні програмного масштабування.

Щоб використовувати апаратне масштабування, необхідно задати повноекранний режим для всієї робочої області або її частини. Наступний код ActionScript 3.0 задає повноекранний режим для всієї робочої області.

import flash.geom. *; {Stage.fullScreenSourceRect = new Rectangle (0,0,320,240); stage.displayState = StageDisplayState.FULL_SCREEN; }

Коли цій властивості присвоєно значення допустимого прямокутника, а властивість displayState налаштоване на повноекранний режим, програвач Flash Player і AIR масштабують задану область. Фактичний розмір робочої області в пікселах в ActionScript не змінюється. Flash Player і AIR використовують обмеження мінімального розміру прямокутника при показі стандартного повідомлення «Натисніть« Esc »для виходу з повноекранного режиму». Зазвичай мінімальний розмір становить близько 260 на 30 пікселів, але він може варіюватися в залежності від платформи і версії Flash Player.

Щоб включити масштабування, задайте для властивості fullScreenSourceRect об'єкт прямокутника.

stage.fullScreenSourceRect = new Rectangle (0,0,320,240);

Щоб відключити масштабування, надайте властивості fullScreenSourceRect значення null.

stage.fullScreenSourceRect = null;

Щоб задіяти всі можливі апаратні функції прискорення в Flash Player, включіть їх в діалоговому вікні «Властивості Flash Player». Щоб відкрити діалогове вікно з настройками, клацніть правою кнопкою миші (Windows) або здійсните клацання правою кнопкою миші при затиснутою клавіші Control (Mac) у вмісті Flash Player в вашому браузері. Перейдіть на першу вкладку, «Відображення», і встановіть прапорець «Включити апаратне прискорення».

Режими вікна: прямий і суміщений з використанням графічного процесора

У програвач Flash Player 10 додано два режими вікна: прямий і суміщений з використанням графічного процесора, які можна включити через параметри публікації в інструменті розробки Flash. Ці режими не підтримуються в AIR. Для використання цих режимів необхідно включити апаратне прискорення в програвачі Flash Player.

Прямий режим використовує найшвидший і найбільш прямий шлях для виведення графіки на екран, що корисно при відтворенні відео.

Режим суміщення з використанням графічного процесора прискорює поєднання, використовуючи графічний процесор відеокарти. Поєднання відео - це процес накладання декількох шарів зображення для отримання одного відеозображення. Коли суміщення прискорюється за допомогою графічного процесора, воно може поліпшити продуктивність YUV-перетворення, корекції кольору, повороту або масштабування і накладення YUV-перетворенням називається перетворення кольорів композитних аналогових сигналів, використовуваних для передачі, в модель кольору RGB (червоний, зелений, синій), яка використовується відеокамерами і дисплеями. Використання графічного процесора для прискорення суміщення скорочує споживання ресурсів пам'яті і процесора. Крім того, це покращує відтворення відео зі стандартною роздільною здатністю.

Будьте обережні, застосовуючи ці режими вікна. Поєднання з використанням графічного процесора може інтенсивно використовувати пам'ять і ресурси центрального процесора. Якщо деякі операції (такі як режими накладення, фільтрація, обрізання або маскування) не можуть виконуватися графічним процесором, вони виконуються програмним забезпеченням. Компанія Adobe рекомендує додавати не більше одного SWF-файлу на HTML-сторінку, коли використовуються ці режими. Крім того, їх не слід включати для банерів. Функція «Тестувати ролик» інструменту розробки Flash не використовує апаратне прискорення, але його можна використовувати для вибору опції «Перегляд публікації».

Не має сенсу ставити в SWF-файлі частоту кадрів вище 60, тобто максимальної частоти оновлення екрану. При використанні частоти кадрів від 50 до 55 допускається пропуск кадрів, який може час від часу відбуватися з різних причин.

Для прямого режиму потрібно Microsoft DirectX 9 і 128 МБ відеопам'яті на платформі Windows і OpenGL для Apple Macintosh, Mac OS X 10.2 і більш пізніх версій. Для режиму суміщення з використанням графічного процесора потрібна підтримка Microsoft DirectX 9 і Pixel Shader 2.0 на платформі Windows з 128 МБ відеопам'яті. На платформі Mac OS X і Linux для режиму суміщення з використанням графічного процесора потрібно OpenGL 1.5 і кілька розширень OpenGL (об'єкт буфера кадру, мультитекстурирование, об'єкти шейдеров, мова шейдера, шейдер фрагмента).

Режими прискорення (direct і gpu) для окремого SWF-файлу можна активувати через діалогове вікно «Параметри публікації» в Flash в меню «Апаратне прискорення» на вкладці «Flash». Якщо вибрати варіант «Ні», режим вікна повертається до значення default, transparent або opaque відповідно до варіанта, обраним на вкладці «HTML».

Дополнительная информация

rss
Карта