Search code examples
actionscript-3apache-flexairflex4

Missing Class EventResize


I'm using AS3 Flex 4.6.0 / Air 3.1 and i cannot find the ResizeEvent.

I added the following code:

stage.addEventListener(Event.RESIZE, onStageResize);

and want to have the function

private function onStageResize(ev:Event) : void //Here i want to use ev:ResizeEvent instead of ev:Event
{

}

I need the ev.OldWidth and ev.OldHeight property and i don't know why i cannot use

 import flash.event.ResizeEvent;

Anyone has an idea? Thanks!


Solution

  • The import for Event.RESIZE is:

    import flash.events.Event
    

    Remember, that event will only be fired if the StageScaleMode.NO_SCALE is set.

    package {
    
        import flash.display.Sprite;
        import flash.display.StageScaleMode;
        import flash.events.Event
    
        public class Main extends Sprite {
    
            var swfWidthPrev:int;
            var swfHeightPrev:int;
    
            function resizeDisplay(event:Event):void
            {
                trace("~~~ resize event ~~~");
                trace("swfWidthPrev: " + swfWidthPrev);
                trace("swfHeightPrev: " + swfHeightPrev);
                trace("swfWidthCur: " + stage.stageWidth);
                trace("swfHeightCur: " + stage.stageHeight);
                swfWidthPrev = stage.stageWidth;
                swfHeightPrev = stage.stageHeight;
            }
    
            public function Main() {
                if(stage){
                    stageReady();
                }else{
                    this.addEventListener(Event.ADDED_TO_STAGE, stageReady);
                }
            }
    
            private function stageReady(e:Event = null):void {
                swfWidthPrev = stage.stageHeight;
                swfHeightPrev = stage.stageWidth;
                stage.scaleMode = StageScaleMode.NO_SCALE
                stage.addEventListener(Event.RESIZE, resizeDisplay);
            }
        }
    }