DrawUtil.as

Go to the documentation of this file.
00001 import flash.geom.ColorTransform;
00002 import flash.geom.Point;
00003 import flash.display.BitmapData;
00004 import flash.geom.Matrix;
00005 class gugga.utils.DrawUtil 
00006 {
00007         public static function fillRect(aContainer:MovieClip, aColor:Number, aAlpha:Number, aX:Number, aY:Number, aWidth:Number, aHeight:Number){
00008                 aContainer.beginFill(aColor, aAlpha);
00009                 aContainer.moveTo(aX, aY);
00010                 aContainer.lineTo(aX, aY + aHeight);
00011                 aContainer.lineTo(aX + aWidth, aY + aHeight);
00012                 aContainer.lineTo(aX + aWidth, aY);
00013                 aContainer.lineTo(aX, aY);
00014                 aContainer.endFill();
00015         }
00016         
00017         public static function fillBitmapRect(aContainer:MovieClip, aBitmap:BitmapData, aX:Number, aY:Number, aWidth:Number, aHeight:Number){
00018                 aContainer.beginBitmapFill(aBitmap, new Matrix(), true, false);
00019                 aContainer.moveTo(aX, aY);
00020                 aContainer.lineTo(aX, aY + aHeight);
00021                 aContainer.lineTo(aX + aWidth, aY + aHeight);
00022                 aContainer.lineTo(aX + aWidth, aY);
00023                 aContainer.lineTo(aX, aY);
00024                 aContainer.endFill();
00025         }
00026         
00027         public static function fillPolygon(aContainer:MovieClip, aColor:Number, aAlpha:Number, aPoints:Array){
00028                 aContainer.beginFill(aColor, aAlpha);
00029                 aContainer.moveTo(aPoints[0].x, aPoints[0].y);
00030 
00031                 for(var i = 1; i < aPoints.length; i++){
00032                         aContainer.lineTo(aPoints[i].x, aPoints[i].y);
00033                 }
00034 
00035                 aContainer.lineTo(aPoints[0].x, aPoints[0].y);
00036                 aContainer.endFill();
00037         }
00038         
00039         public static function createBoundingBoxCover(aName:String, aContainer:MovieClip):MovieClip
00040         {
00041                 var cover:MovieClip = aContainer.createEmptyMovieClip(aName, aContainer.getNextHighestDepth());
00042                 fillRect(cover, 0xFF0000, 0, 0, 0, 1, 1);
00043                 
00044                 var boundsObject:Object = aContainer.getBounds(aContainer);
00045                 cover._x = boundsObject.xMin;
00046                 cover._y = boundsObject.yMin;
00047                 cover._width = boundsObject.xMax - boundsObject.xMin;
00048                 cover._height = boundsObject.yMax - boundsObject.yMin;
00049 
00050                 return cover;
00051         }
00052         
00053         public static function createCoverForMovieClip(aName:String, aContainer:MovieClip, aTarget:MovieClip):MovieClip
00054         {
00055                 var newMovieClip:MovieClip = aContainer.createEmptyMovieClip(aName, aContainer.getNextHighestDepth());
00056                 
00057                 DrawUtil.fillRect(newMovieClip, 0xFF0000, 0, 0, 0, 1, 1);
00058                 
00059                 newMovieClip._x = aTarget._x;
00060                 newMovieClip._y = aTarget._y;
00061                 newMovieClip._width = aTarget._width;
00062                 newMovieClip._height= aTarget._height;
00063                 
00064                 return newMovieClip;
00065         }
00066         
00067         public static function createCoverForMovieClips(aName:String, aContainer:MovieClip, aTargets:Array):MovieClip
00068         {       
00069                 var newMovieClip:MovieClip = aContainer.createEmptyMovieClip(aName, aContainer.getNextHighestDepth(), {_width:1, _height:1});
00070                 if (aTargets.length == 0)
00071                 {
00072                         return newMovieClip;
00073                 }
00074 
00075                 DrawUtil.fillRect(newMovieClip, 0xFF0000, 0, 0, 0, 1, 1);
00076                 
00077                 var tempMovieClip:MovieClip = aTargets[0];
00078                 
00079                 var x1:Number = tempMovieClip._x;
00080                 var y1:Number = tempMovieClip._y;
00081                 var x2:Number = x1 + tempMovieClip._width;
00082                 var y2:Number = y1 + tempMovieClip._height;
00083                 
00084                 for (var i:Number = 1; i < aTargets.length; i++)
00085                 {
00086                         tempMovieClip = aTargets[i];
00087                         x1 = Math.min(x1, tempMovieClip._x);
00088                         y1 = Math.min(y1, tempMovieClip._y);
00089                         x2 = Math.max(x2, tempMovieClip._x + tempMovieClip._width);
00090                         y2 = Math.max(y2, tempMovieClip._y + tempMovieClip._height);
00091                         
00092                 }
00093                 
00094                 newMovieClip._x = x1;
00095                 newMovieClip._y = y1;
00096                 newMovieClip._width = Math.abs(x2 - x1);
00097                 newMovieClip._height= Math.abs(y2 - y1);
00098                 
00099                 return newMovieClip;
00100         }
00101         
00102         public static function drawArc(aCanvas:MovieClip, aCenter:Point, aRadius:Number, aAngle:Number, aStartAngle:Number):Point
00103         {
00104                 var angleMid:Number;
00105                 var bx:Number;
00106                 var by:Number;
00107                 var cx:Number;
00108                 var cy:Number;
00109                 
00110                 var segs:Number = Math.ceil(Math.abs(aAngle)/(Math.PI/4));
00111                 var segAngle:Number = aAngle/segs;
00112                 var theta:Number = segAngle;
00113                 var angle:Number = aStartAngle;
00114                 
00115                 if (segs>0) {
00116                         for (var i:Number = 0; i < segs; i++) {
00117                                 angle += theta;
00118                                 angleMid = angle - (theta / 2);
00119                                 bx = aCenter.x + Math.cos(angle) * aRadius;
00120                                 by = aCenter.y + Math.sin(angle) * aRadius;
00121                                 cx = aCenter.x + Math.cos(angleMid) * (aRadius / Math.cos(theta / 2));
00122                                 cy = aCenter.y + Math.sin(angleMid) * (aRadius / Math.cos(theta / 2));
00123                                 aCanvas.curveTo(cx, cy, bx, by);
00124                         }
00125                 }
00126 
00127                 return new Point(bx, by);
00128         }
00129         
00130         public static function getRelativePolarAngle(aCenter:Point, aPoint:Point):Number
00131         {
00132                 var quadrantOffsetAngle:Number = 0; // First Quadrant
00133                 var xOffset:Number = aPoint.x - aCenter.x;
00134                 var yOffset:Number = aPoint.y - aCenter.y;
00135                 
00136                 if(xOffset < 0)
00137                 {
00138                         quadrantOffsetAngle = Math.PI; // Second and Third Quadrant
00139                 }
00140                 else if(xOffset > 0 && yOffset < 0)
00141                 {
00142                         quadrantOffsetAngle = 2 * Math.PI; //Fourth Quadrant
00143                 }
00144                 
00145                 return (quadrantOffsetAngle + Math.atan(yOffset /xOffset)); 
00146         }
00147         
00148         public static function colorMovieClip(aMovieClip:MovieClip, aColor:Number)
00149         {
00150                 var colorTransform = new ColorTransform();
00151                 colorTransform.rgb = aColor;
00152                 aMovieClip.transform.colorTransform = colorTransform;
00153         }
00154         
00155         public static function convertCoordinateSystem(aPoint:Point, aSourceCoordinateSystem:MovieClip, aTargetCoordinateSystem:MovieClip) : Point
00156         {
00157                 aSourceCoordinateSystem.localToGlobal(aPoint);
00158                 aTargetCoordinateSystem.globalToLocal(aPoint);
00159                 
00160                 return aPoint;
00161         }
00162         
00163         public static function convertCoordinateSystemX(aX:Number, aSourceCoordinateSystem:MovieClip, aTargetCoordinateSystem:MovieClip) : Number
00164         {
00165                 var point : Point = new Point(aX, 0);
00166                 convertCoordinateSystem(point, aSourceCoordinateSystem, aTargetCoordinateSystem);
00167                 
00168                 return point.x;
00169         }
00170         
00171         public static function convertCoordinateSystemY(aY:Number, aSourceCoordinateSystem:MovieClip, aTargetCoordinateSystem:MovieClip) : Number
00172         {
00173                 var point : Point = new Point(0, aY);
00174                 convertCoordinateSystem(point, aSourceCoordinateSystem, aTargetCoordinateSystem);
00175                 
00176                 return point.y;
00177         }
00178 }

Generated on Fri May 11 17:12:42 2007 for GuggaFramework by  doxygen 1.5.2