2012-03-10 2 views
3

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

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

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

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

enter image description here

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

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?

ответ

6

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

+0

Я не знал об этом. Любая идея тогда о том, как избежать второго щелчка? 1-й клик ПОЛУЧИТ дочерний SWF. – Simon

+1

Действительно, это очень верно. Представьте себе, что ужасная вещь, вспышка будет в Интернете, если вы нажали на неправильную ссылку и БАМ вы получили takover полного экрана для некоторого грязного порно сайта. Хлоп. –

+0

Понял. Я предполагаю, что это ограничение означает, что с ограничениями в отношении того, как работает это приложение, я не смогу сделать полноэкранный режим одним щелчком мыши (т.е. 1-й щелчок запускает swf для запуска и никоим образом не запускает другой щелчок мыши без щелчок). – Simon

0

Вот решение

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; 
    } 
} 
Смежные вопросы