AS3 видео в полноэкранном режиме - PullRequest
2 голосов
/ 22 сентября 2009

Я создал видеоплеер, но мне нужно добавить кнопку, которая при нажатии переводит видео в полноэкранный режим просмотра. Я не хочу масштабировать все на сцене - только видео. Кажется, я не могу найти, как это сделать - я думал, что это будет легко.

Ответы [ 5 ]

2 голосов
/ 22 сентября 2009

Проверьте, работает ли это:

stage.displayState = StageDisplayState.FULL_SCREEN;
videoPlayer.x = 0;
videoPlayer.y = 0;
//save the width and height in temp vars 
//for restoring them later.
videoPlayer.width = stage.fullScreenWidth;
videoPlayer.height = stage.fullScreenHeight;
1 голос
/ 02 апреля 2014

Недавно столкнулся с этой проблемой, и это сработало как шарм Так что оставьте это здесь на случай, если это кому-нибудь поможет.

Код клиента Flex:

private function startFullScreen(event:MouseEvent):void
{    
    videoHolder.removeChild(vid);  //videoHolder is an spark VideoDisplay  
                                       Component
    this.stage.addChild(vid);           
    this.stage.displayState = StageDisplayState.FULL_SCREEN;
    oldWidth = vid.width;         //store old values required while going back
    oldHeight = vid.height;
    vid.width = this.stage.width;
    vid.height = this.stage.height;
    this.stage.addEventListener(FullScreenEvent.FULL_SCREEN,fullScreenHandler);
}
} 


/*      handler for Fullscreen      */
private function fullScreenHandler(event:FullScreenEvent):void
{
    //This function is called when user presses Esc key 
    //on returning to normal state, add the video back  

    if(!event.fullScreen)
    {               
        this.stage.removeChild(vid);
        videoHolder.addChild(vid);
        vid.width = oldWidth;
        vid.height = oldHeight;
        this.stage.removeEventListener(FullScreenEvent.FULL_SCREEN,fullScreenHandler )
    }
}
1 голос
/ 22 сентября 2009

Насколько я понимаю, вы можете установить только весь экран в полноэкранном режиме, а не элементы выборочно, поскольку вы эффективно масштабируете объект сцены в корне дерева отображения. Лучший способ добиться эффекта, который вы ищете, - это расположить / скрыть / показать любые объекты, которые вы не хотите видеть в обработчике событий FullScreenEvent.FULL_SCREEN.

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/FullScreenEvent.html

Кроме того, соответствующий фрагмент из документов рабочей области, раздел displayState :

Поведение масштабирования фильма в полноэкранном режиме определяется настройкой scaleMode (задается с помощью свойства Stage.scaleMode или настроек тега внедрения SWF-файла в файле HTML). Если для свойства scaleMode установлено значение noScale, а приложение переходит в полноэкранный режим, свойства ширины и высоты рабочей области обновляются, а событие Stage - изменяет размер.

0 голосов
/ 13 ноября 2015

Для входа в полноэкранный режим

var fullScreenButton:Button = new Button();
...
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;  
}

Для выхода из полноэкранного режима

...
stage.displayState = StageDisplayState.NORMAL;
...

Примечание: вы также можете нажать escape.

Источник: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS44B1892B-1668-4a80-8431-6BA0F1947766.html

0 голосов
/ 24 сентября 2009

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

У Амаргоша правильный подход, но его можно сделать более гибким, подключив слушателя:

stage.addEventListener(Event.RESIZE, _onStageResize, false, 0, true);
stage.displayState = StageDisplayState.FULL_SCREEN;

private function _onStageResize(event:Event):void
{
    if(stage.displayState == StageDisplayState.FULL_SCREEN)
    {
        // Proportionally resize your video to the stage's new dimensions
        // i.e. set its height and width such that the aspect ratio is not distorted
    }
    else
    {
        // Restore the normal layout of your elements
    }
}
...