2014-11-24 130 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);