2012-06-06 5 views
0

전체 화면 버튼이있는 애플리케이션이 있는데 버튼을 클릭하면 스테이지의 displayState가 StageDisplayState.FULL_SCREEN_INTERACTIVE으로 변경됩니다.Event.Resize가 displayState에서 두 번 트리거되도록 FULL_SCREEN로 변경하는 것을 방지하려면 어떻게해야합니까?

그러면 stage.scaleMode = StageScaleMode.NO_SCALE 인 경우 Event.RESIZE이 두 번 발사됩니다.

내가 다시 stage.displayState = StageDisplayState.NORMAL으로 변경하면 이벤트가 한 번만 실행됩니다.

누구나 onResize 함수를 직접 호출하거나 사용자 정의 이벤트를 구현하는 것을 제외하고 Event.RESIZE가 두 번 실행되는 것을 방지하는 좋은 방법을 알고 있습니까? 문제를 재생

샘플 코드 :

package test 
{ 
    import flash.display.Sprite; 
    import flash.display.StageDisplayState; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 

    public class Main extends Sprite 
    { 

     public function Main():void 
     { 
      if (stage) 
       this.init();     
      else 
       this.addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      this.removeEventListener(Event.ADDED_TO_STAGE, init); 
      stage.addEventListener(Event.RESIZE, onResize); 
      stage.scaleMode = StageScaleMode.NO_SCALE; 

      var button:Sprite = new Sprite(); 
      button.mouseEnabled = true; 
      button.addEventListener(MouseEvent.CLICK, doResize); 
      button.graphics.lineStyle(3,0x00ff00); 
      button.graphics.beginFill(0x0000FF); 
      button.graphics.drawRect(10, 10, 100, 100); 
      button.graphics.endFill(); 

      this.addChild(button); 
     } 

     private function doResize(e:MouseEvent) : void { 
      if (stage.displayState == StageDisplayState.NORMAL) { 
       stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;     
      } 
      else { 
       stage.displayState = StageDisplayState.NORMAL; 
      }   
     } 

     private function onResize(e:Event) : void { 
      trace("onResize", stage.displayState); 
     }  
    } 
} 

추가 조사가 전체 화면으로 전환 같아 것을 보여준다는 두 단계, 첫번째로 StageDisplayState.FULL_SCREEN_INTERACTIVE 다음 StageDisplayState.NORMAL로 크기를 조정이다.

+1

방금 ​​코드를 테스트했습니다. 좋습니다. onResize는 스테이지가 상태를 바꿀 때마다 한 번만 호출됩니다. – strah

+0

어떤 플래시 버전을 타겟팅 했습니까? 11.0, 10.0 및 9.0 (대화 형 대신 일반 FULL_SCREEN 사용)을 시도했지만 모두 동일한 문제를 재현합니다. –

+1

FP10 용으로 출판되었습니다. FP10.2 독립형 및 11.1 브라우저에서 테스트되었습니다. – strah

답변

1

디버그 플레이어로 제한되는 버그 인 것 같습니다.

Flash Player 11.1의 디버그 버전은 Chrome 버전 11.2 및 브라우저 플러그인 11.1과 달리이 버그를 재생성합니다.

0

부울을 사용하십시오. 예를 들어, resize 함수에서 true로 설정하고 실행하려면 true가 아닌지 확인하십시오.

관련 문제