전체 화면 버튼이있는 애플리케이션이 있는데 버튼을 클릭하면 스테이지의 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
로 크기를 조정이다.
방금 코드를 테스트했습니다. 좋습니다. onResize는 스테이지가 상태를 바꿀 때마다 한 번만 호출됩니다. – strah
어떤 플래시 버전을 타겟팅 했습니까? 11.0, 10.0 및 9.0 (대화 형 대신 일반 FULL_SCREEN 사용)을 시도했지만 모두 동일한 문제를 재현합니다. –
FP10 용으로 출판되었습니다. FP10.2 독립형 및 11.1 브라우저에서 테스트되었습니다. – strah