Не уверен, правильно ли я понял, но если вы хотите эффект «раскрытия», например, когда вы рисуете маску для отображения скрытого изображения, это может быть достигнуто немного проще:
var bitmapToReveal:BitmapData = new BitmapToReveal(0,0);
var brush:BitmapData = new Brush(0,0);
var canvasData:BitmapData = new BitmapData(bitmapToReveal.width,bitmapToReveal.height,true,0x00FFFFFF);
var cursor:Point = new Point();//used as destination point when painting
var zero:Point = new Point();//reused for painting
var reveal:Bitmap = new Bitmap(bitmapToReveal);
var canvas:Bitmap = new Bitmap(canvasData);
reveal.cacheAsBitmap = canvas.cacheAsBitmap = true;
addChild(reveal);
addChild(canvas);
reveal.mask = canvas;
stage.addEventListener(MouseEvent.MOUSE_DOWN, brushDown);
stage.addEventListener(MouseEvent.MOUSE_UP, brushUp);
function brushDown(event:MouseEvent):void {
this.addEventListener(Event.ENTER_FRAME, paint);
}
function brushUp(event:MouseEvent):void {
this.removeEventListener(Event.ENTER_FRAME, paint);
}
function paint(event:Event):void {
cursor.x = mouseX-brush.width*.5;
cursor.y = mouseY-brush.height*.5;
canvasData.copyPixels(brush,brush.rect,cursor,brush,zero,true);
}
Я использую два растровых изображения из библиотеки (bitmapToReveal и brush).
Главное, на что стоит обратить внимание, это метод copyPixels () . Я копирую
растровое изображение кисти на холсте (пустые прозрачные растровые данные),
используя смещенную позицию курсора (так, чтобы кисть центрировалась), и используя
Альфа-канал, чтобы сделать это. Обратите внимание, что для cacheAsBitmap установлено значение true
как для маски, так и для маске. Вы должны сделать это, чтобы получить прозрачную маску,
что является ключом к эффекту.
Вот результат:
![bitmap brush](https://i984.photobucket.com/albums/ae330/orgicus/bitmapBrush.jpg)
Вы можете «нарисовать» маску здесь . CS4 Источник здесь .
НТН,
George