[AS3] Defeated by stageWidth/Height

Well everything was going well until I tested my project in a browser (embeded using SWFObject if that matters).

After all the troubleshooting, it turns out that the stageWidth/Height values were just 0 which threw off the whole thing.

The stage is set up by the DocClass (some unrelated stuff taken out to make it shorter):

package
{
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    
    import flash.filters.GradientBevelFilter;
    import flash.filters.DropShadowFilter;
    
    import flash.events.Event;
    import flash.events.MouseEvent;
    
    import DataManager;
    import ImageManager;
    
    public class StageManager extends MovieClip
    {
        private static var _instance:StageManager;
        private var mData:DataManager;
        private var mImage:ImageManager;
        
        private var images:Object;
        
        // elements
        private var base:MovieClip = new MovieClip();
        public var baseColor:uint = 0xCCCCCC; // initial color, unless decided otherwise
        private var baseMarginX:Number = 5; // margin of each side
        private var baseMarginY:Number = 5;
        private var baseShadowDist:Number = 5; // will add to baseMarginY bottom, 0 is disable shadow
        private var baseShadowAngle:Number = 90;
        private var baseCornerSize:Number = 30;
        private var baseAreaX:Number; // x coord of face of base panel, calculated on drawBase
        private var baseAreaY:Number; // y "
        private var baseAreaW:Number; // width of face "
        private var baseAreaH:Number; // height "
        
        private var portalTitle:TextField;
        private var portalTitleText:String = "";
        private var portalTitleSize:Number = 16;
        private var portalTitleFont:String = "Arial";
        private var portalTitleColor:uint = 0x000000;
        
        private var caption:TextField;
        private var captionText:String;
        private var captionSize:Number = 10;
        private var captionFont:String = "Arial";
        private var captionColor:uint = 0x000000;
        
        public var loaderAnim:LoadingAnim;
        private var loaderX:Number;
        private var loaderY:Number;
        
        // Grab Singleton instance
        public static function getInstance():StageManager
        {
            return _instance;
        }
        
        public function StageManager()
        {
            _instance = this;
            this.addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
        }
        
        private function init(event:Event):void
        {
            this.removeEventListener(Event.ADDED_TO_STAGE, init);
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            
            this.addChild(base);
            base.x = baseMarginX;
            base.y = baseMarginY;
            drawBase();
            
            // = Create Title text =========================
            var format:TextFormat = new TextFormat();
            format.font = portalTitleFont;
            format.color = portalTitleColor;
            format.size = portalTitleSize;
            format.align = TextFormatAlign.CENTER;
            
            portalTitle = new TextField();
            this.addChild(portalTitle);
            portalTitle.defaultTextFormat = format;
            portalTitle.autoSize = TextFieldAutoSize.LEFT;
            portalTitle.background = false;
            portalTitle.border = false;
            portalTitle.text = portalTitleText;
            portalTitle.y = baseMarginY;
            portalTitle.x = stage.stageWidth;
            
            loaderX = stage.stageWidth / 2;
            loaderY = 100;
            
            loaderAnim = new LoadingAnim(loaderX, loaderY, true, false);
            this.addChild(loaderAnim);
            
            mData = DataManager.getInstance();
            mData.init();
        }
        
        public function dataLoadComplete():void
        {
            /* stuff */
        }
        
        public function drawBase():void
        {
            // Find our new reference points
            baseAreaX = baseMarginX + (baseCornerSize / 4);
            baseAreaY = baseMarginY + (baseCornerSize / 4);
            baseAreaW = stage.stageWidth - (baseAreaX * 2);
            baseAreaH = stage.stageHeight - ((baseAreaY * 2) - baseShadowDist);

            base.graphics.clear();
            base.graphics.beginFill(baseColor, 1.0);
            base.graphics.drawRoundRect(0, 0, baseAreaW, baseAreaH, baseCornerSize);
            base.graphics.endFill();
            base.filters = 
            [
                new DropShadowFilter(baseShadowDist, baseShadowAngle, 0x000000, 0.8, (baseShadowDist * 0.75), (baseShadowDist * 0.75)),
                new GradientBevelFilter(baseShadowDist, baseShadowAngle, [0x222222, 0xCCCCCC, 0xFFFFFF], [1, 0, 1], [0, 128, 255], 4, 4)
            ]
        }
    }
}

Hopefully this is quick, it really should be basic. I’m sure it will be the one thing I didn’t try too… I did as many searches as I could before having to retreat.

So everything does show up and function correctly, but in the wrong place and size because the values I’m getting for the stage width and height are 0.

Thanks.