Mira, lo que se me ocurre es o que construyas los botones por AS utilizando un gradienFill o que dupliques el movie del botón y al duplicado le apliques un blendMode de "overlay".
Un método de crear un círuclo con degradado:
Código ActionScript :
*import flash.geom.Matrix;
//---Crear un círculo con degradado
var bola:MovieClip = this.createEmptyMovieClip("bola", this.getNextHighestDepth());
var colors:Array = [0x000000, 0xFF0000];
var fillType:String = "radial";
var spreadMethod:String = "pad";
var alphas:Array = [0, 0xFF];
var ratios:Array = [0x10, 0xFF];
var spreadMethod:String = "pad";
var interpolationMethod:String = "RGB";
var focalPointRatio:Number = 0;
var matrix:Matrix = new Matrix();
matrix.createGradientBox(300, 300, 0, -80, -80);
bola.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio);
drawCircle(bola, 100, 100, 100);
brillo.endFill();
//---Función de hacer un círculo
function drawCircle(movie:MovieClip, posX:Number, posY:Number, radio:Number):Void {
var c1:Number = (Math.SQRT2-1)*radio;
var c2:Number = Math.SQRT2/2*radio;
movie.moveTo(posX+radio,posY);
movie.curveTo(posX+radio,posY+c1,posX+c2,posY+c2);
movie.curveTo(posX+c1,posY+radio,posX,posY+radio);
movie.curveTo(posX-c1,posY+radio,posX-c2,posY+c2);
movie.curveTo(posX-radio,posY+c1,posX-radio,posY);
movie.curveTo(posX-radio,posY-c1,posX-c2,posY-c2);
movie.curveTo(posX-c1,posY-radio,posX,posY-radio);
movie.curveTo(posX+c1,posY-radio,posX+c2,posY-c2);
movie.curveTo(posX+radio,posY-c1,posX+radio,posY);
}
Para el segundo método imagina que en la escena tengas un MovieClip con nombre de instancia "boton":
(esto funciona perfectamente si los colores son escalas de grises)Código ActionScript :
import flash.geom.ColorTransform;
var copia:MovieClip = boton.duplicateMovieClip("copia", this.getNextHighestDepth());
var newColor:ColorTransform = new ColorTransform();
newColor.rgb = 0xFF0000;
copia.transform.colorTransform = newColor;
copia.blendMode = "overlay";