AS3:全屏模式问题
问题描述:
这是我的代码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 - mode
的bcg.visible
变得true
,当我点击mybtn
退出FULL_SCREEN - mode
的bcg.visible
变得false
,但是当我退出击中escape
事实并非如此。如何使它工作?
第二,当我退出FULL_SCREEN - mode
时,我不想删除eventlistener imgZoom
。但是,当我把removeLEventlistener
作为option1
然后回到NORMAL - mode
不起作用,并且当我将removeLEventlistener
作为option2
然后listener
不会删除?
任何人都可以帮忙吗?
答
可以通知您全屏通过添加监听到舞台进入/退出事件: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
函数,因此每次调用该函数时都会重新定义它。这意味着第二次点击按钮imgZoom
时undefined
,你永远不能删除以前的事件监听器。
将函数定义移动到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);