不确定我是否正确,但如果您想要“显示”效果,例如绘制蒙版来显示隐藏图像,这可以稍微容易地实现:
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);
}
我正在使用库中的两个位图(显示位图和画笔)。
主要看的是复制像素() http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html#copyPixels%28%29方法。我复制
将画笔位图放入画布(一个空的透明的位图数据),
使用偏移光标位置(使画笔居中),并使用
alpha 通道可以做到这一点。请注意,我已经设置了缓存为位图为真
对于面罩和面罩。你需要这样做才能得到一个透明的面具,
这是效果的关键。
结果如下:
你可以“画”面具here http://lifesine.eu/so/changePixels/。 CS4 源代码是here http://lifesine.eu/so/changePixels/bitmapPaint.fla.
哈特哈,
乔治