Полноэкранный режим не разрешен с StageDisplayState - PullRequest
3 голосов
/ 10 марта 2012

Существует родительское приложение Flex, которое позволяет встраивать в него пользовательские инструменты (SWF-файлы).

Я проверил обертку HTML для родительского элемента, и она использует SWFObject и имеет полный экран:

<param name="allowFullScreen" value="true" />
<param name="allowFullScreen" value="true" />

Я пытаюсь собрать инструмент, который просто переводит родительское приложение в полноэкранный режим и из него.

enter image description here

Вот упрощенная версиякод.Я попробовал несколько вариантов , но все равно не повезло.

public function toogleScreen():void
{
 // this is fired from a function within the child swf
  if (this.stage.displayState == StageDisplayState.FULL_SCREEN)
   this.stage.displayState=StageDisplayState.NORMAL;
 else
   this.stage.displayState=StageDisplayState.FULL_SCREEN;
}

При просмотре кода выявляется проблема:

SecurityError: Error #2152: Full screen mode is not allowed.
at flash.display::Stage/set_displayState()
at flash.display::Stage/set displayState()
at ExampleCustomTools.FullScreen::fullscreen/toogleScreen()[C:\Users\Simon\Adobe Flash Builder 4\DekhoSimulator_Viewshed\src\ExampleCustomTools\FullScreen\fullscreen.mxml:53]
at ExampleCustomTools.FullScreen::fullscreen/init()[C:\Users\Simon\Adobe Flash Builder 4\DekhoSimulator_Viewshed\src\ExampleCustomTools\FullScreen\fullscreen.mxml:40]
at ExampleCustomTools.FullScreen::fullscreen/___fullscreen_Module1_creationComplete()[C:\Users\Simon\Adobe Flash Builder 4\DekhoSimulator_Viewshed\src\ExampleCustomTools\FullScreen\fullscreen.mxml:7]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\core\UIComponent.as:12977]
at mx.core::UIComponent/set initialized()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\core\UIComponent.as:1757]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:819]
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\hero_private_beta\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1157]

Что мне здесь не хватает?Я полагаю, это может быть связано с тем, что это отдельный SWF-файл для основного родительского SWF-файла?

Ответы [ 2 ]

6 голосов
/ 10 марта 2012

В Flash player вы можете сделать приложение полноэкранным только в ответ на щелчок мышью. Ваша функция toogleScreen не является обработчиком событий мыши.

0 голосов
/ 01 января 2013

Вот решение

function toogleScreen():void
{    
 if(stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE || stage.displayState==StageDisplayState.FULL_SCREEN)    
   {
      stage.displayState=StageDisplayState.NORMAL;
   }
   else
   {
      stage.displayState=StageDisplayState.FULL_SCREEN;
   }
}
...