首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止Event.Resize在displayState更改为FULL_SCREEN时触发两次?

如何防止Event.Resize在displayState更改为FULL_SCREEN时触发两次?
EN

Stack Overflow用户
提问于 2012-06-06 19:36:38
回答 2查看 1.1K关注 0票数 0

我有一个带有全屏按钮的应用程序,当单击该按钮时,我将stage的displayState更改为StageDisplayState.FULL_SCREEN_INTERACTIVE

这使得Event.RESIZEstage.scaleMode = StageScaleMode.NO_SCALE的情况下会触发两次。

如果我改回stage.displayState = StageDisplayState.NORMAL,事件只会触发一次。

除了直接调用onResize函数或实现自定义事件之外,有人知道防止Event.RESIZE两次触发的好方法吗?

重现该问题的示例代码:

代码语言:javascript
复制
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.NORMAL,然后是StageDisplayState.FULL_SCREEN_INTERACTIVE

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-06 20:02:05

看起来这是一个调试播放器的bug。

调试版本的Flash Player 11.1会重现此错误,而Chrome版本11.2和浏览器插件11.1则不会。

票数 1
EN

Stack Overflow用户

发布于 2014-03-30 05:05:26

使用布尔值。例如,在resize函数中将其设为true,并检查执行该函数是否为true。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10913432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档