【问题标题】:AS3: fullscreen mode issueAS3:全屏模式问题
【发布时间】:2014-11-24 17:40:37
【问题描述】:

这是我的代码

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,但是当我通过点击@ 退出时987654329@ 没有。如何让它发挥作用?

其次,当我退出FULL_SCREEN - mode 时,我不想删除eventlistener imgZoom。但是当我将removeLEventlistener 设置为option1 时,再转回NORMAL - mode 不起作用,当我将removeLEventlistener 设置为option2 时,listener 不会删除?

有人可以帮忙吗?

【问题讨论】:

    标签: actionscript-3 fullscreen addeventlistener


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      相关资源
      最近更新 更多