bitmapdata.draw bug 一枚

import flash.display.Bitmap;

import flash.display.BitmapData;

import flash.display.Shape;

import flash.display.BlendMode;



var dst1:BitmapData = new BitmapData(100,100, true, 0xFF000000);

var dst2:BitmapData = dst1.clone();



var src:BitmapData = new BitmapData(100,100, true, 0);

var shape:Shape = new Shape();

shape.graphics.beginFill(0xcc);

shape.graphics.drawCircle(50,50,50);

shape.graphics.endFill();

src.draw( shape );



dst1.draw( shape, null, null, BlendMode.ERASE );

dst2.draw( src, null, null, BlendMode.ERASE );



var bmp1:Bitmap = new Bitmap(dst1);

var bmp2:Bitmap = new Bitmap(dst2);

bmp2.x = 100;



addChild(bmp1);

addChild(bmp2);

其中一个draw的是displayobjet,一个draw的是bitmapdata,Blendmode.ERASE和APHLA,就不起作用了。 看了帮助,上面说了一段让我莫名的话 "Erases the background based on the alpha value of the display object. This process requires that the blendMode property of the parent display object be set to flash.display.BlendMode.LAYER. " 什么需要父对象的blendmode设置为LAYER,我就郁闷了,不就是用alpha通道来计算像素值嘛,又不是真要你去填背景的像素值。 但为什么用displayobject就可以了,用bitmapdata就不行...... 无法理解之前,暂时当它是bug......现在只好每次用Bitmap去包装一下,再draw,真是极大的浪费啊 orz

你可能感兴趣的:(flash,as3)