I’ve been thinking about how to do this for a while, read a little about it. Here’s what I came up with after trying out a little porting and then modification and optimisation:
/* Imports
********************************************* */
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
/* Variables & Objects
********************************************* */
var bitmap:BitmapData = new BitmapData(200, 200, false, 0x00000000);
var bmRect:Rectangle = new Rectangle();
/* Setup
********************************************* */
var holder:MovieClip = _root.createEmptyMovieClip("_holder", _root.getNextHighestDepth());
holder.attachBitmap(bitmap, holder.getNextHighestDepth());
holder._x = Stage.width/2 - holder._width/2;
holder._y = Stage.height/2 - holder._height/2;
/* drawBitmapCircle
********************************************* */
function drawBitmapCircle(target:BitmapData, cX:Number, cY:Number, r:Number, color:Number) {
var x:Number = 0;
var y:Number = 0;
var r2:Number = r*r;
for (x=1; x<r; x++) {
y = Math.ceil(Math.sqrt(r2 - x*x));
bmRect.topLeft = new Point(cX-x, cY-y);
bmRect.size = new Point(2*x, 2*y);
target.fillRect(bmRect, color);
}
}
/* drawBitmapCircle Call
********************************************* */
drawBitmapCircle(bitmap, 100, 100, 90, 0xFFFFFF);
The files are attached.