bitmapdata.draw bug 一枚

10 篇文章 0 订阅
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值