Odtwarzanie wideo w trybie pełnoekranowym

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Program Flash Player i środowisko AIR umożliwiają utworzenie aplikacji pełnoekranowej do odtwarzania wideo oraz obsługują skalowanie wideo na pełny ekran.

W przypadku zawartości AIR działającej na komputerze stacjonarnym w trybie pełnoekranowym wygaszacz ekranu i opcje oszczędzania energii są wyłączone na czas odtwarzania, dopóki nie zakończy się wejściowy strumień wideo lub użytkownik nie wyłączy trybu pełnoekranowego.

Szczegółowe informacje o korzystaniu z trybu pełnoekranowego zawiera rozdział Praca z trybem pełnoekranowym .

Włączanie trybu pełnoekranowego dla programu Flash Player w przeglądarce

Aby możliwe było zaimplementowanie trybu pełnoekranowego dla programu Flash Player działającego w przeglądarce, należy dopuścić taką możliwość w szablonie publikacji aplikacji. Szablony dopuszczające tryb pełnoekranowy zawierają znaczniki <object> i <embed> z parametrem allowFullScreen . Poniższy przykład ilustruje parametr allowFullScreen w znaczniku <embed> .

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
    id="fullScreen" width="100%" height="100%" 
    codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> 
    ... 
    <param name="allowFullScreen" value="true" /> 
    <embed src="fullScreen.swf" allowFullScreen="true" quality="high" bgcolor="#869ca7" 
        width="100%" height="100%" name="fullScreen" align="middle" 
        play="true" 
        loop="false" 
        quality="high" 
        allowScriptAccess="sameDomain" 
        type="application/x-shockwave-flash" 
        pluginspage="http://www.adobe.com/go/getflashplayer"> 
    </embed> 
    ... 
</object>

W programie Flash 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.

Inicjowanie trybu pełnoekranowego

W przypadku treści programu Flash Player działającego w przeglądarce tryb pełnoekranowy inicjuje się w odpowiedzi na kliknięcie myszą lub naciśnięcie klawisza. Na przykład tryb pełnoekranowy może być inicjowany, gdy użytkownik kliknie przycisk opatrzony etykietą Pełny ekran lub wybierze polecenie Pełny ekran z menu kontekstowego. Aby program reagował na działania użytkownika, należy dodać detektor zdarzeń do obiektu, na którym te działania są wykonywane. Poniższy kod dodaje detektor zdarzeń do przycisku, który użytkownik klika w celu przejścia w tryb pełnoekranowy:

var fullScreenButton:Button = new Button(); 
fullScreenButton.label = "Full Screen"; 
addChild(fullScreenButton); 
fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
 
function fullScreenButtonHandler(event:MouseEvent) 
{ 
    stage.displayState = StageDisplayState.FULL_SCREEN;     
 
}

Ten kod inicjuje tryb pełnoekranowy, przypisując właściwości Stage.displayState wartość StageDisplayState.FULL_SCREEN . Cały stół montażowy jest skalowany do rozmiarów ekranu, a wideo jest skalowane proporcjonalnie do obszaru, jaki zajmuje na stole montażowym.

Właściwość fullScreenSourceRect umożliwia określenie konkretnego obszaru stołu montażowego, który ma zostać przeskalowany do pełnego ekranu. Najpierw należy zdefiniować prostokąt, który ma być przeskalowany do pełnego ekranu. Następnie należy go przypisać do właściwości Stage.fullScreenSourceRect . W tej wersji funkcji fullScreenButtonHandler() dodano dwa wiersze kodu, które skalują do pełnego ekranu tylko obraz wideo.

private function fullScreenButtonHandler(event:MouseEvent) 
{ 
    var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
    stage.fullScreenSourceRect = screenRectangle; 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
}

Mimo że przykładowy kod wywołuje funkcję obsługi zdarzeń w odpowiedzi na kliknięcie myszy, technika włączania trybu pełnoekranowego jest taka sama zarówno w programie Flash Player, jak i w środowisku AIR. Należy zdefiniować prostokąt, który ma zostać przeskalowany, a następnie ustawić właściwość Stage.displayState . Więcej informacji zawiera Dokumentacja języka ActionScript 3.0 dla platformy Adobe Flash .

W kompletnym przykładzie, który znajduje się poniżej, dodano kod tworzący połączenie i obiekt NetStream dla materiału wideo, a następnie rozpoczynający odtwarzanie.

package 
{ 
    import flash.net.NetConnection; 
    import flash.net.NetStream; 
    import flash.media.Video; 
    import flash.display.StageDisplayState; 
    import fl.controls.Button; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.events.FullScreenEvent; 
    import flash.geom.Rectangle; 
     
    public class FullScreenVideoExample extends Sprite 
    {     
        var fullScreenButton:Button = new Button(); 
        var video:Video = new Video(); 
 
        public function FullScreenVideoExample() 
        { 
            var videoConnection:NetConnection = new NetConnection(); 
            videoConnection.connect(null); 
             
            var videoStream:NetStream = new NetStream(videoConnection); 
            videoStream.client = this; 
 
            addChild(video); 
             
            video.attachNetStream(videoStream); 
             
            videoStream.play("http://www.helpexamples.com/flash/video/water.flv"); 
             
            fullScreenButton.x = 100; 
            fullScreenButton.y = 270; 
            fullScreenButton.label = "Full Screen"; 
            addChild(fullScreenButton); 
            fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
        } 
 
        private function fullScreenButtonHandler(event:MouseEvent) 
        {  
            var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
            stage.fullScreenSourceRect = screenRectangle; 
            stage.displayState = StageDisplayState.FULL_SCREEN;  
        }     
         
        public function onMetaData(infoObject:Object):void 
        { 
            // stub for callback function 
        } 
    } 
}

onMetaData() to funkcja wywołania zwrotnego do obsługi ewentualnych metadanych wideo. Funkcja wywołania zwrotnego jest to funkcja, którą środowisko wykonawcze wywołuje w odpowiedzi na określoną sytuację lub zdarzenie. W tym przykładzie funkcja onMetaData() jest faktycznie pusta, a istnieje tylko z uwagi na wymóg wskazania funkcji wywołania zwrotnego. Więcej informacji zawiera sekcja Pisanie metod wywołania zwrotnego do obsługi metadanych i punktów sygnalizacji .

Wychodzenie z trybu pełnoekranowego

Użytkownik może wyjść z trybu pełnoekranowego, naciskając jeden ze skrótów klawiaturowych, np. klawisz Escape. Możliwe jest wymuszenie wyjścia z trybu pełnoekranowego bezpośrednio w kodzie ActionScript. Należy w tym celu przypisać do właściwości Stage.diplayState wartość StageDisplayState.NORMAL . Poniższy przykładowy kod powoduje wyjście z trybu pełnoekranowego w odpowiedzi na zdarzenie netStatus NetStream.Play.Stop.

videoStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
 
private function netStatusHandler(event:NetStatusEvent) 
{ 
    if(event.info.code == "NetStream.Play.Stop") 
        stage.displayState = StageDisplayState.NORMAL; 
}

Sprzętowe przyspieszanie wyświetlania w trybie pełnoekranowym

Zmiana skali prostokątnego obszaru stołu montażowego do trybu pełnoekranowego powoduje, że program Flash Player lub środowisko AIR korzysta z przyspieszania sprzętowego, o ile jest dostępne i włączone. Środowisko wykonawcze używa karty wideo zainstalowanej w komputerze do przyspieszania skalowania wideo lub fragmentu stołu montażowego do rozmiaru pełnego ekranu. W takich okolicznościach aplikacje Flash Player można często ulepszyć, zmieniając klasę Video (lub klasę Camera w oprogramowaniu Flash Player 11.4/AIR 3.4 bądź nowszym) na klasę StageVideo.

Więcej informacji na temat sprzętowego przyspieszania wyświetlania w trybie pełnoekranowym zawiera rozdział Praca z trybem pełnoekranowym . Więcej informacji na temat klasy StageVideo zawiera rozdział Wyświetlanie z przyspieszaniem sprzętowym przy użyciu klasy StageVideo .