Tryb pełnoekranowy umożliwia ustawienie stołu montażowego filmu w taki sposób, aby wypełniał on cały ekran bez krawędzi ani menu kontenera. Właściwość
displayState
klasy Stage służy do włączania i wyłączania trybu pełnoekranowego dla pliku SWF. Dla właściwości
displayState
można ustawić jedną z wartości zdefiniowanych przez stałe klasy flash.display.StageDisplayState. Aby włączyć tryb pełnoekranowy, należy właściwości
displayState
przypisać wartość
StageDisplayState.FULL_SCREEN
:
stage.displayState = StageDisplayState.FULL_SCREEN;
Aby włączyć pełnoekranowy tryb interaktywny (nowy tryb w programie Flash Player 11.3), ustaw dla właściwości
displayState
wartość
StageDisplayState.FULL_SCREEN_INTERACTIVE
.
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
W programie Flash Player tryb pełnoekranowy może być inicjowany tylko za pośrednictwem kodu ActionScript w odpowiedzi na kliknięcie (również kliknięcie prawym przyciskiem myszy) lub naciśnięcie klawisza. Treść AIR działająca w bezpiecznym obszarze izolowanym aplikacji nie wymaga uruchamiania trybu pełnoekranowego w odpowiedzi na gest użytkownika.
Aby wyjść z trybu pełnoekranowego, należy właściwości
displayState
przypisać wartość
StageDisplayState.NORMAL
.
stage.displayState = StageDisplayState.NORMAL;
Ponadto użytkownik może wyłączyć tryb pełnoekranowy, aktywując inne okno lub korzystając z jednej z kilku kombinacji klawiszy: klawisz Esc (wszystkie platformy), Control-W (Windows), Command-W (Mac) lub Alt-F4 (Windows).
Zezwolenie na użycie trybu pełnoekranowego w programie Flash Player
Aby możliwe było używanie trybu pełnoekranowego w pliku SWF osadzonym na stronie HTML, kod HTML, który osadza program Flash Player, musi zawierać znacznik
param
i atrybut
embed
o nazwie
allowFullScreen
i wartości
true
, jak poniżej:
<object>
...
<param name="allowFullScreen" value="true" />
<embed ... allowFullScreen="true" />
</object>
W narzędziu Flash do tworzenia treści wybierz polecenie Plik -> Ustawienia publikowania, a następnie w oknie dialogowym Ustawienia publikowania, na karcie HTML, wybierz szablon Tylko Flash - zezwalaj na tryb pełnoekranowy.
W programie Flex dopilnuj, aby szablon HTML zawierał znaczniki
<object>
i
<embed>
zezwalające na tryb pełnoekranowy.
Jeśli na stronie sieci Web używany jest kod JavaScript w celu generowania znaczników, które służą do osadzania plików SWF, wówczas należy zmodyfikować kod JavaScript w celu dodania znacznika i atrybutu
allowFullScreen param
. Na przykład: jeśli strona HTML korzysta z funkcji
AC_FL_RunContent()
(która jest używana przez strony HTML wygenerowane w programach Flash Professional i Flash Builder), wówczas należy dodać do wywołania tej funkcji parametr
allowFullScreen
, w następujący sposób:
AC_FL_RunContent(
...
'allowFullScreen','true',
...
); //end AC code
Nie ma to zastosowania w przypadku plików SWF działających w autonomicznych programach Flash Player.
Uwaga:
W przypadku ustawienia trybu okna (wmode w języku HTML) na nieprzezroczysty bez okna (opaque) lub przezroczysty bez okna (transparent) wideo pełnoekranowe i tak zawsze jest nieprzezroczyste.
Użycie trybu pełnoekranowego w programie Flash Player działającym w przeglądarce podlega także ograniczeniom związanym z bezpieczeństwem. Ograniczenia te zostały opisane w rozdziale
Zabezpieczenia
.
Włączanie pełnoekranowego trybu interaktywnego w programie Flash Player 11.3 lub nowszym
Od wersji 11.3 program Flash Player obsługuje pełnoekranowy tryb interaktywny pozwalający korzystać ze wszystkich klawiszy (poza klawiszem
Esc
, który służy do wyłączania tego trybu). Pełnoekranowy tryb interaktywny jest przydatny w przypadku gier. Umożliwia na przykład obsługę czatu dla wielu graczy oraz klawiszy WASD w grach akcji z perspektywą pierwszej osoby.
Aby możliwe było używanie pełnoekranowego trybu interaktywnego w pliku SWF osadzonym na stronie HTML, kod HTML, który osadza zawartość programu Flash Player, musi zawierać znacznik
param
oraz atrybut
embed
o nazwie
allowFullScreenInteractive
i wartości
true
, tak jak w poniższym przykładzie.
<object>
...
<param name="allowFullScreenInteractive" value="true" />
<embed ... allowFullScreenInteractive="true" />
</object>
W narzędziu Flash do tworzenia treści wybierz polecenie Plik -> Ustawienia publikowania, a następnie w oknie dialogowym Ustawienia publikowania na karcie HTML wybierz szablon Tylko Flash — zezwalaj na pełnoekranowy tryb interaktywny.
W programach Flash Builder i Flex upewnij się, że szablony HTML zawierają znaczniki
<object>
i
<embed>
obsługujące pełnoekranowy tryb interaktywny.
Jeśli na stronie internetowej do generowania znaczników osadzania plików SWF jest używany kod JavaScript, należy zmodyfikować kod JavaScript w celu dodania znacznika i atrybutu
allowFullScreenInteractive param
. Jeśli na przykład strona HTML korzysta z funkcji
AC_FL_RunContent()
(stosowanej na stronach HTML generowanych przez programy Flash Professional i Flash Builder), należy dodać parametr
allowFullScreenInteractive
do wywołania tej funkcji w sposób przedstawiony poniżej.
AC_FL_RunContent(
...
'allowFullScreenInteractive','true',
...
); //end AC code
Nie ma to zastosowania w przypadku plików SWF działających w autonomicznych odtwarzaczach Flash Player.
Pełnoekranowy stół montażowy i skalowanie
Właściwości
Stage.fullScreenHeight
i
Stage.fullScreenWidth
zwracają wysokość i szerokość monitora, na którym włączany jest tryb pełnoekranowy, jeśli przełączenie w ten tryb następuje natychmiast. Zwrócone wartości mogą być niepoprawne, jeśli użytkownik miał możliwość przesunięcia okna przeglądarki z jednego monitora na drugi już po pobraniu wartości, ale przed włączeniem trybu pełnoekranowego. Wartości będą zawsze poprawne, jeśli zostaną odczytane w tej samej metodzie obsługi zdarzenia, w której właściwości
Stage.displayState
przypisano wartość
StageDisplayState.FULL_SCREEN
. W przypadku użytkowników z wieloma monitorami treść pliku SWF wypełni tylko jeden monitor. Program Flash Player i środowisko AIR korzystają z metryki w celu określenia monitora, który zawiera największą część pliku SWF, a następnie wykorzystują ten monitor dla trybu pełnoekranowego. Właściwości fullScreenHeight i fullScreenWidth odzwierciedlają tylko rozmiar monitora stosowanego w przypadku trybu pełnoekranowego. Więcej informacji zawierają opisy właściwości
Stage.fullScreenHeight
i
Stage.fullScreenWidth
w
Skorowidzu języka ActionScript 3.0 dla platformy Adobe Flash
.
Skalowanie stołu montażowego w trybie pełnoekranowym przebiega w ten sam sposób, jak w trybie normalnym; skalowanie jest kontrolowane przez właściwość
scaleMode
klasy Stage. Jeśli właściwość
scaleMode
ma wartość
StageScaleMode.NO_SCALE
, wówczas właściwości
stageWidth
i
stageHeight
zmieniają się w celu odzwierciedlenia wielkości obszaru ekranu zajętego przez plik SWF (w tym przypadku cały ekran); w przypadku wyświetlania w przeglądarce to ustawienie kontroluje parametr HTML.
Zdarzenie
fullScreen
klasy Stage może służyć do wykrywania i reagowania na włączanie/wyłączanie trybu pełnoekranowego. Na przykład: podczas włączania lub wyłączania trybu pełnoekranowego konieczne może być przesuwanie, dodawanie lub usuwanie elementów z ekranu, jak w poniższym przykładzie:
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);
Zgodnie z kodem obiekt zdarzenia dla zdarzenia
fullScreen
jest instancją klasy flash.events.FullScreenEvent, która zawiera właściwość
fullScreen
określającą, czy tryb pełnoekranowy jest włączony (
true
) lub wyłączony (
false
).
Obsługa klawiatury w trybie pełnoekranowym
Gdy program Flash Player działa w przeglądarce, wyłączone są wszystkie funkcje języka ActionScript związane z klawiaturą, takie jak zdarzenia i możliwość wprowadzania tekstu w instancjach klasy TextField. Istnieje jednak kilka wyjątków od tej zasady (tj. klawiszy aktywnych):
-
wybrane klawisze bez reprezentacji drukowalnej, w szczególności klawisze strzałek, spacja i klawisz Tab;
-
skróty klawiaturowe, które powodują wyjście z trybu pełnoekranowego: Esc (Windows i Mac), Control-W (Windows), Command-W (Mac) oraz Alt-F4.
Te ograniczenia nie obowiązują dla treści SWF działającej w autonomicznym programie Flash Player lub w aplikacji AIR. Środowisko AIR udostępnia interaktywny tryb pełnoekranowy, którym można sterować z klawiatury.
Obsługa myszy w trybie pełnoekranowym
Domyślnie zdarzenia dotyczące myszy działają w trybie pełnoekranowym tak samo jak poza tym trybem. W trybie pełnoekranowym można jednak opcjonalnie ustawić właściwość
Stage.mouseLock
, aby włączyć blokowanie myszy. Zablokowanie myszy powoduje wyłączenie kursora i umożliwia poruszanie myszą bez punktu odniesienia.
Uwaga:
Blokowanie myszy można włączyć tylko w trybie pełnoekranowym aplikacji dla komputerów. Ustawienie tej opcji w przypadku aplikacji, która nie jest w trybie pełnoekranowym lub jest przeznaczona dla urządzeń przenośnych, powoduje wygenerowanie wyjątku.
Blokowanie myszy jest automatycznie wyłączane i kursor myszy staje się widoczny w następujących sytuacjach:
-
Użytkownik wyłącza tryb pełnoekranowy za pomocą klawisza Escape (wszystkie platformy) lub klawiszy Control-W (Windows), Command-W (Mac) albo Alt-F4 (Windows).
-
Okno aplikacji przestaje być aktywne.
-
Jest widoczny dowolny interfejs użytkownika związany z ustawieniami. (Dotyczy to również wszystkich okien dialogowych związanych z prywatnością).
-
Jest wyświetlane natywne okno dialogowe, na przykład okno dialogowe wysyłania plików.
Zdarzenia skojarzone z ruchami myszy, takie jak
mouseMove
, obsługują obiekt zdarzenia przy użyciu klasy MouseEvent. Gdy jest wyłączone blokowanie myszy, w celu określenia położenia kursora należy użyć metod
MouseEvent.localX
i
MouseEvent.localY
. W przypadku włączonego blokowanie myszy położenie kursora można określić za pomocą właściwości
MouseEvent.movementX
i
MouseEvent.movementY
. Właściwości
movementX
i
movementY
zawierają zmiany położenia myszy od ostatniego zdarzenia, a nie bezwzględne współrzędne położenia myszy.
Skalowanie sprzętowe w trybie pełnoekranowym
Właściwość
fullScreenSourceRect
klasy Stage służy do ustawiania w programie Flash Player i AIR powiększania skali dla konkretnego regionu stołu montażowego do trybu pełnoekranowego. Jeśli jest to technicznie możliwe, program Flash Player i środowisko AIR skalują obraz sprzętowo, przy użyciu karty graficznej i karty wideo zainstalowanej w komputerze użytkownika. Z reguły pozwala to na szybsze wyświetlanie treści niż w przypadku skalowania programowego.
Aby skorzystać ze skalowania sprzętowego, należy ustawić całość lub część stołu montażowego na tryb pełnego ekranu. Poniższy kod ActionScript 3.0 powoduje ustawienie całego stołu montażowego na tryb pełnego ekranu:
import flash.geom.*;
{
stage.fullScreenSourceRect = new Rectangle(0,0,320,240);
stage.displayState = StageDisplayState.FULL_SCREEN;
}
Gdy dla tej właściwości ustawiony na prawidłowy prostokąt, a właściwość
displayState
jest ustawiona na tryb pełnoekranowy, wówczas program Flash Player i AIR przeprowadza skalowanie określonego obszaru. Właściwy rozmiar obiektu Stage w pikselach wewnątrz skryptu ActionScript nie ulega zmianie. Programy Flash Player i AIR wymuszają minimalny limit rozmiaru prostokąta, aby możliwe było wyświetlenie standardowego komunikatu o konieczności naciśnięcia klawisza Esc w celu wyjścia z trybu pełnoekranowego. Limit ten wynosi z reguły około 260 na 30 pikseli, lecz może się różnić w zależności od platformy i wersji programu Flash Player.
Właściwość
fullScreenSourceRect
można ustawić tylko wówczas, gdy program Flash Player lub AIR nie działa w trybie pełnoekranowym. Aby prawidłowo używać tej właściwości, należy najpierw przypisać jej wartość, a następnie włączyć tryb pełnoekranowy za pośrednictwem właściwości
displayState
.
W celu włączenia skalowania należy ustawić właściwość
fullScreenSourceRect
na obiekt prostokątny.
stage.fullScreenSourceRect = new Rectangle(0,0,320,240);
Aby wyłączyć skalowanie, należy przypisać właściwości
fullScreenSourceRect
wartość
null
.
stage.fullScreenSourceRect = null;
Aby wykorzystać wszystkie funkcje przyspieszania sprzętowego oferowane przez program Flash Player, należy włączyć przyspieszanie sprzętowe za pośrednictwem okna dialogowego Ustawienia programu Flash Player. Aby załadować okno dialogowe, kliknij prawym przyciskiem myszy (Windows) lub kliknij, trzymając naciśnięty klawisz Control (Mac), na treści wyświetlanej przez program Flash Player w przeglądarce. Następnie należy wybrać pierwszą kartę, Ekran, i kliknąć pole wyboru włączania przyspieszania sprzętowego.
Tryby okna: bezpośredni i kompozycji wspomaganej przez procesor GPU
W programie Flash Player 10 wprowadzono dwa tryby okna: tryb bezpośredni i tryb kompozycji wspomaganej przez procesor GPU. Tryby te wybiera się w ustawieniach publikowania w narzędziu Flash do tworzenia treści. Te tryby nie są obsługiwane w środowisku AIR. Aby z nich skorzystać, należy włączyć przyspieszanie sprzętowe w programie Flash Player.
W trybie bezpośrednim stosowana jest bezpośrednia, najszybsza technika umieszczania grafiki na ekranie, korzystna w przypadku odtwarzania wideo.
W trybie kompozycji wspomaganej przez procesor GPU kompozycja wideo jest wspomagana przez procesor graficzny na karcie wideo. Kompozycja wideo to proces nakładania wielu warstw obrazu w celu utworzenia jednego obrazu wideo. Wspomaganie kompozycji przez procesor GPU może przyspieszyć takie operacje, jak konwersja YUV, korekcja kolorów, obroty, skalowanie i mieszanie. Konwersja YUV to konwersja kolorów przekazywanych w zespolonym sygnale analogowym na wartości modelu kolorów RGB (czerwony, zielony, niebieski) stosowany w kamerach wideo i monitorach. Przyspieszanie kompozycji z wykorzystaniem procesora GPU zmniejsza zapotrzebowanie na pamięć i moc obliczeniową procesora głównego (CPU). Poprawia ponadto płynność odtwarzania wideo o standardowej rozdzielczości.
Należy jednak zachować ostrożność przy stosowaniu tych trybów okna. Korzystanie z kompozycji wspomaganej przez GPU może, paradoksalnie, zwiększać zużycie pamięci i obciążenie procesora głównego. Jeśli niektóre operacje (np. mieszanie, filtrowanie, obcinanie lub maskowanie) nie mogą być wykonane przez procesor GPU, są realizowane programowo. W przypadku stosowania tych trybów firma Adobe zaleca odtwarzanie nie więcej niż jednego pliku SWF na stronie HTML. Ponadto nie zaleca się stosowania tych trybów w banerach. Funkcja Testuj film w programie Flash nie korzysta z przyspieszania sprzętowego, ale możliwe jest przetestowanie przyspieszania za pomocą opcji podglądu publikacji.
Ustawianie w pliku SWF częstości klatek wyższej niż 60, tj. maksymalna częstotliwość odświeżania ekranu, jest bezcelowe. Ustawienie częstości klatek na poziomie od 50 do 55 dopuszcza pomijanie klatek, do którego z różnych przyczyn zawsze dochodzi.
Do korzystania z trybu bezpośredniego wymagana jest obsługa standardu Microsoft DirectX 9 z pamięcią VRAM o rozmiarze co najmniej 128 MB w systemie Windows albo obsługa standardu OpenGL na komputerze Apple Macintosh z systemem Mac OS X w wersji 10.2 lub wyższej. Kompozycja wspomagana przez GPU wymaga obsługi standardu Microsoft DirectX 9 i modułu Pixel Shader 2.0 w systemach Windows z co najmniej 128 MB pamięci VRAM. W systemach Max OS X i Linux kompozycja wspomagana przez GPU wymaga obsługi standardu OpenGL 1.5 i kilku rozszerzeń OpenGL (obiektu buforu klatek, multitekstur, obiektów cieniujących, języka cieniowania, modułu cieniującego fragmenty).
Tryby przyspieszania
direct
i
gpu
można włączać dla każdego pliku SWF z osobna w oknie Ustawienia publikowania w programie Flash, w menu przyspieszania sprzętowego na karcie Flash. W wypadku wybrania opcji Brak przywracany jest tryb okna
default
,
transparent
lub
opaque
, zgodnie z ustawieniem trybu okna na karcie HTML.