2014-11-24 54 views
0

这是我的代码AS3:全屏模式问题

function btnClick (e:MouseEvent):void 
{ 
    if (stage.displayState == StageDisplayState.NORMAL) 
    { 
     stage.displayState = StageDisplayState.FULL_SCREEN; 
     bcgr.visible = true; 
     function imgZoom (e:MouseEvent):void 
     { 
      //zooming - code not relevant to my issue 
     } 
     stage.addEventListener (MouseEvent.MOUSE_WHEEL, imgZoom); 
    } 
    else 
    { 
     //option1: stage.removeEventListener (MouseEvent.MOUSE_WHEEL, imgZoom); 
     stage.displayState = StageDisplayState.NORMAL; 
     bcgr.visible = false; 
     //option2: stage.removeEventListener (MouseEvent.MOUSE_WHEEL, imgZoom); 
    } 
} 
mybtn.addEventListener (MouseEvent.CLICK, btnClick); 

我有这个代码,我无法解决两个问题。

首先,当我进入FULL_SCREEN - modebcg.visible变得true,当我点击mybtn退出FULL_SCREEN - modebcg.visible变得false,但是当我退出击中escape事实并非如此。如何使它工作?

第二,当我退出FULL_SCREEN - mode时,我不想删除eventlistener imgZoom。但是,当我把removeLEventlistener作为option1然后回到NORMAL - mode不起作用,并且当我将removeLEventlistener作为option2然后listener不会删除?

任何人都可以帮忙吗?

回答

1

可以通知您全屏通过添加监听到舞台进入/退出事件:stage.addEventListener(FullScreenEvent.FULL_SCREEN, ...)

这里是舞台上的文档的链接:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#event:fullScreen

对于imgZoom问题,您需要移动定义在btnClick功能之外。 imgZoom变量局限于btnClick函数,因此每次调用该函数时都会重新定义它。这意味着第二次点击按钮imgZoomundefined,你永远不能删除以前的事件监听器。

将函数定义移动到btnClick处理程序以外,可以让您在稍后再次删除它。

这里是一切融合在一起:

function imgZoom (e:MouseEvent):void 
{ 
    //zooming - code not relevant to my issue 
} 

function fullScreenListener (e:FullScreenEvent) 
{ 
    bcgr.visible = e.fullScreen; 
    if (e.fullScreen) 
    { 
     stage.addEventListener (MouseEvent.MOUSE_WHEEL, imgZoom); 
    } 
    else 
    { 
     stage.removeEventListener (MouseEvent.MOUSE_WHEEL, imgZoom); 
    } 
} 

function btnClick (e:MouseEvent):void 
{ 
    if (stage.displayState == StageDisplayState.NORMAL) 
    { 
     stage.displayState = StageDisplayState.FULL_SCREEN; 
    } 
    else 
    { 
     stage.displayState = StageDisplayState.NORMAL; 
    } 
} 

stage.addEventListener (FullScreenEvent.FULL_SCREEN, fullScreenListener); 
mybtn.addEventListener (MouseEvent.CLICK, btnClick);