这是我的密码
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退出时就没有了。如何使它工作呢?
其次,当我退出eventlistener imgZoom时,我不想删除FULL_SCREEN - mode。但是,当我将removeLEventlistener放置为option1,然后返回到NORMAL - mode时不起作用,而当我将removeLEventlistener放置为option2时,listener就不会删除?
有人能帮忙吗?
发布于 2014-11-24 09:40:37
可以通过在舞台上添加一个侦听器来通知您全屏输入/退出事件:stage.addEventListener(FullScreenEvent.FULL_SCREEN, ...)
下面是一个指向舞台文档的链接: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);https://stackoverflow.com/questions/27100930
复制相似问题