What can I be wrong about?
public static function meshGradientFill(mesh:Mesh, bearing:Number, col0:uint, col1:uint, alpha0:uint = 1, alpha1:uint = 1):void {
var fCos:Number, fSin:Number, fDist:Number, fMin:Number, fMax:Number;
var fR0:Number, fR1:Number, fG0:Number, fG1:Number, fB0:Number, fB1:Number;
var iNum:int, iVertex:int;
var fScale:Number, fR:Number, fG:Number, fB:Number, fA:Number;
iNum = mesh.numVertices;
aDistance.length = iNum;
fCos = Math.cos(bearing);
fSin = Math.sin(bearing);
fMin = 1000000000;
fMax = -fMin;
for (iVertex = 0; iVertex < iNum; iVertex++) {
mesh.getVertexPosition(iVertex, pt);
fDist = pt.x * fCos + pt.y * fSin;
fMin = MathUtil.min(fDist, fMin);
fMax = MathUtil.max(fDist, fMax);
aDistance[iVertex] = fDist;
}
fR0 = (col0 >> 16) / 256.0;
fG0 = ((col0 >> 8) & 0xff) / 256.0;
fB0 = (col0 & 0xff) / 256.0;
fR1 = (col1 >> 16) / 256.0;
fG1 = ((col1 >> 8) & 0xff) / 256.0;
fB1 = (col1 & 0xff) / 256.0;
for (iVertex = 0; iVertex < iNum; iVertex++) {
fDist = aDistance[iVertex];
fScale = (fDist - fMin) / (fMax - fMin);
fR = fScale * fR0 + (1 - fScale) * fR1;
fG = fScale * fG0 + (1 - fScale) * fG1;
fB = fScale * fB0 + (1 - fScale) * fB1;
fA = fScale * alpha0 + (1 - fScale) * alpha1;
col0 = (int(fR * 256.0) << 16) + (int(fG * 256.0) << 8) + int(fB * 256.0);
mesh.setVertexAlpha(iVertex, fA);
mesh.setVertexColor(iVertex, col0);
}
}