AS2 :: BackgroundFill Class
Submitted by hasan on Thu, 07/06/2006 - 07:00.
Goal: To devise an easy reusable way to create seamless backgrounds for full-screen Flash movies whether it be gradients or bitmaps. Works with a "bg" Object customized to your needs.
import flash.display.BitmapData;
import flash.geom.Matrix;
class labs.otuome.ui.graphics.BackgroundFill
{
private var _main:MovieClip;
private var _sub:MovieClip;
private var _w:Number;
private var _h:Number;
private var _gradient:Object;
private var _bitmap:String;
private var _fillType:String;
private var _colors:Array;
private var _alphas:Array;
private var _ratios:Array;
private var _matrix:Matrix;
private var _tile:BitmapData;
public function BackgroundFill(clip:MovieClip)
{
_main = clip;
}//end constructor
public function fillBg(bg:Object):Void
{
_w = Stage.width;
_h = Stage.height;
_bitmap = bg.bitmap;
_gradient = bg.gradient;
_main.clear();
_main.lineStyle(1, 0xFFFFFF, 0);
_sub.clear();
_sub.lineStyle(1, 0xFFFFFF, 0);
if (!_gradient)
{
_tile = BitmapData.loadBitmap(_bitmap);
_main.beginBitmapFill(_tile);
_main.moveTo(0,0);
}
else if (!_bitmap)
{
if (_gradient.radial)
{
_fillType = "radial";
_matrix = new Matrix();
_matrix.createGradientBox(_w,_h,0,0,0);
}
else
{
_fillType = "linear";
_matrix = new Matrix();
_matrix.createGradientBox(_w,_h,90/180*Math.PI,0,0);
}
//use the defaults for spreadMethod("pad"), interpolationMethod("RGB") and focalPointRatio(0)
_colors = [_gradient.c1, _gradient.c2];
_alphas = [_gradient.a1, _gradient.a2];
_ratios = [_gradient.r1, _gradient.r2];
_main.beginGradientFill(_fillType, _colors, _alphas, _ratios, _matrix);
}
else
{
_tile = BitmapData.loadBitmap(_bitmap);
_main.beginBitmapFill(_tile);
_main.moveTo(0,0);
if (_gradient.radial)
{
_fillType = "radial";
_matrix = new Matrix();
_matrix.createGradientBox(_w,_h,0,0,0);
}
else
{
_fillType = "linear";
_matrix = new Matrix();
_matrix.createGradientBox(_w,_h,90/180*Math.PI,0,0);
}
_colors = [_gradient.c1, _gradient.c2];
_alphas = [_gradient.a1, _gradient.a2];
_ratios = [_gradient.r1, _gradient.r2];
_sub = _main.createEmptyMovieClip("sub",_main.getNextHighestDepth());
_sub.beginGradientFill(_fillType, _colors, _alphas, _ratios, _matrix);
_sub.lineTo(_w,0);
_sub.lineTo(_w,_h);
_sub.lineTo(0,_h);
_sub.lineTo(0,0);
_sub.endFill();
}
_main.lineTo(_w,0);
_main.lineTo(_w,_h);
_main.lineTo(0,_h);
_main.lineTo(0,0);
_main.endFill();
}
}//end class

