Очень возможно сделать с ColorMatrixFilter, построив матрицу со смещением 255 на красном канале (но в противном случае это единичная матрица).
В этом примере класса Document предполагается, что библиотека FLA имеет экспортированный символ 720 x 480 «GradientBMD», который является подклассом flash.display.BitmapData:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.filters.*;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var matrix:Array = new Array();
matrix = matrix.concat([1,0,0,0,255]);
matrix = matrix.concat([0,1,0,0,0]);
matrix = matrix.concat([0,0,1,0,0]);
matrix = matrix.concat([0,0,0,1,0]);
var colorFilter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
bmd.applyFilter(bmd, bmd.rect, new Point(0,0), colorFilter);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
}
}
}
Вы также можете создать новые bitmapData, заполненные цветом, к которому нужно добавить градиент (вместо черного), и скопировать его в свой градиент с помощью BlendMode.ADD:
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.geom.Point;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
var bmd2:BitmapData = new BitmapData(720, 480, false, 0xFF0000);
bmd.draw(bmd2, null, null, BlendMode.ADD, bmd.rect,false);
}
}
}