# \[AS3\] Full browser back ground with smoothing

**URL:** <https://forum.kirupa.com/t/as3-full-browser-back-ground-with-smoothing/232976>\
**Category:** open source\
**Created:** [July 19, 2007, 5:15am UTC](https://forum.kirupa.com/t/as3-full-browser-back-ground-with-smoothing/232976 "2007-07-19T05:15:36Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![joshchernoff](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/joshchernoff/32/1852_2.png) [@joshchernoff](https://forum.kirupa.com/u/joshchernoff)\
**Post date:** [July 19, 2007, 5:15am UTC](https://forum.kirupa.com/t/as3-full-browser-back-ground-with-smoothing/232976/1 "2007-07-19T05:15:36Z")

</div>

:::UPDATED::: 7/31/07

This will load a image and scale it to the browsers scale.

Demo:  
[http://gfxcomplex.com/labs/full\_browser\_bg\_as3.html](http://gfxcomplex.com/labs/full_browser_bg_as3.html)

Background image by darkmotion:  
[http://www.deviantart.com/deviation/46131446/](http://www.deviantart.com/deviation/46131446/)

AS3 source:  
[http://gfxcomplex.com/labs/full\_browser\_bg\_as3.zip](http://gfxcomplex.com/labs/full_browser_bg_as3.zip)

::Added two new Events and two read only public methods for preloading.  
Plus new fade image in Timer.

Methods------------------------  
[COLOR=Red]BrowserBackground.bytesLoaded;[/COLOR] returns a :Number and is read only  
[COLOR=Red]BrowserBackground.bytesTotal; [/COLOR] returns a :Number and is read only

Events--------------------------  
[COLOR=Red]BrowserBackground.BACKGROUND\_LOADING[/COLOR] dispatchis a events for progress of a Loader object, as well updates the BrowserBackground.bytesLoaded and BrowserBackground.bytesTotal.  
[COLOR=Red]  
BrowserBackground.BACKGROUND\_LOADED[/COLOR] dispatchis an event upon a full and complete load of the Load object.

main fla code.

```php
 package {
    import com.gfxcomplex.display.BrowserBackground;
    import flash.display.Sprite;
    import flash.events.Event;
    public class MainDoc extends Sprite {
        private var _bg:BrowserBackground;
        public function MainDoc() {
            _bg = new BrowserBackground("http://gfxcomplex.com/images/Damn_utensils_by_darkmotiondotcom.jpg");
            addChild(_bg);
            _bg.addEventListener(BrowserBackground.BACKGROUND_LOADING, loading);
            _bg.addEventListener(BrowserBackground.BACKGROUND_LOADED, loaded);
        }
        private function loaded(e:Event):void {
            _bg.removeEventListener(BrowserBackground.BACKGROUND_LOADING, loading);
            _bg.removeEventListener(BrowserBackground.BACKGROUND_LOADED, loaded);
        }        
        private function loading(e:Event):void {
            var bL:Number = _bg.bytesLoaded;
            var bT:Number = _bg.bytesTotal;
        }
    }
}

```

```php
/*////////////////////////////////////////////////////
//////////////////////////////////////////////////////
////
//// Full Browser background image
////
//// by Josh Chernoff ( GFX Complex )
//// Copy right ~ josh chernoff ~ 2007
//// All rights reserved
////
////
//// May be redistributed under The 
//// GNU General Public License (GPL) Agreement
////
//////////////////////////////////////////////////////
*/////////////////////////////////////////////////////

/*
Class constructor requires only one argument
url:String for loading the background
public class BrowserBackground(url:String);
*/

package com.gfxcomplex.display{
    import flash.display.Sprite;
    import flash.system.LoaderContext;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.display.Bitmap;
    import flash.display.Loader;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.events.ProgressEvent;
    import flash.net.URLRequest;
    import flash.utils.Timer;    
        
    public class BrowserBackground extends Sprite{
        
        public static const BACKGROUND_LOADED:String = "backgroundLoaded";
        public static const BACKGROUND_LOADING:String = "backgroundLoading";
        private var _bytesLoaded:Number;
        private var _bytesTotal:Number;
        private var _imageHolder:Sprite;
        private var _bitmap:Bitmap;
        private var _loader:Loader;
        private var _timer:Timer;
        public function get bytesTotal():Number{
            return _bytesTotal;
        }
        public function get bytesLoaded():Number{
            return _bytesLoaded;
        }        
        function BrowserBackground(url:String) {
            var context:LoaderContext = new LoaderContext();
            context.checkPolicyFile = true;
            _loader = new Loader();
            _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            _loader.load(new URLRequest(url), context);        
        }
        private function completeHandler(event:Event):void {
            
            
            var sW:Number = stage.stageWidth;
            var sH:Number = stage.stageHeight;            
            _imageHolder = new Sprite();
            _timer = new Timer(50, 44);
            _bitmap = Bitmap(event.target.loader.content);            
            _bitmap.y -= _bitmap.height;
            _bitmap.smoothing = true;
            addChild(_imageHolder);
            _imageHolder.addChild(_bitmap);
            _imageHolder.width = sW;
            _imageHolder.scaleY = _imageHolder.scaleX;
            if (_imageHolder.height < sH) {
                _imageHolder.height = sH;
                _imageHolder.scaleX = _imageHolder.scaleY;
            }
            _imageHolder.y = sH ;
            _imageHolder.alpha = 0;
            _timer.addEventListener(TimerEvent.TIMER, timerListener);
            _timer.start();
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.stage.align = StageAlign.TOP_LEFT;
            stage.addEventListener(Event.RESIZE, stageResized);
            dispatchEvent(new Event(BrowserBackground.BACKGROUND_LOADED));
            _loader = null;
        }        
        private function progressHandler(event:ProgressEvent):void {
            _bytesLoaded = event.bytesLoaded;
            _bytesTotal = event.bytesTotal;
            dispatchEvent(new Event(BrowserBackground.BACKGROUND_LOADING));                    
        }
        private function timerListener(e:TimerEvent){
            _imageHolder.alpha += .025;
            if(_imageHolder.alpha >= 1){    
                _imageHolder.alpha = 1;
                _timer.stop();
                _timer.removeEventListener(TimerEvent.TIMER, timerListener);
                _timer = null;                
            }
            e.updateAfterEvent();
        }
        private function stageResized(event:Event):void {
            var sH:Number = stage.stageHeight;
            _imageHolder.width = stage.stageWidth;
            _imageHolder.scaleY = _imageHolder.scaleX;
            if (_imageHolder.height < sH) {
                _imageHolder.height = sH;
                _imageHolder.scaleX = _imageHolder.scaleY;
            }
            _imageHolder.y = sH;
        }
    }
}

```
