Flex 获得png透明截图的问题和解决方法

所属分类: 网页制作 / Flash 阅读数: 1019
收藏 0 赞 0 分享
代码大概这样:
复制代码 代码如下:

// displaObject 为需要截图对象
var pngEncoder:PngEncoder = new PngEncoder();
var bitMapData:BitmpaData = new BitmpaData(displaObject.widht,displaObject.height);
bitMapData.draw(displaObject);
var imageByteArray:ByteArray = pngEncoder.encode(bitMapData);
.....
send the imageByteArray to server side scripts .......

但是得到结果并不透明,于是怀疑encode方法没有包含Alpha通道。改为第二种方法:
复制代码 代码如下:

var bytes:ByteArray = bitmapData.getPixels(new Rectangle(0,0,bitmapData.width,bitmapData.height));
var imageByteArray2:ByteArray = pngEncoder.encodeByteArray(bytes,bitmapData.width,bitmapData.height,true);

结果仍然没有透明度信息!
于是仔细读了手册每一项找到如下一段话:
transparent:Boolean (default = true) — 指定位图图像是否支持每个像素具有不同的透明度。默认值为 true(透明)。若要创建完全透明的位图,请将 transparent 参数的值设置为 true,将 fillColor 参数的值设置为 0x00000000(或设置为 0)。将 transparent 属性设置为 false 可以略微提升呈现性能。
也就是说,transparent = true 还不行,fillColor还必须设置为 0x000000!!
复制代码 代码如下:

var bitMapData:BitmpaData = new BitmpaData(displaObject.widht,displaObject.height,true,0x000000);

其实这样设置挺说不通的,但是以后碰到问题还是要多看看手册了!
更多精彩内容其他人还在看

利用asp或jsp,flash怎样把数据库中的一张表中的所有记录读取并显示出来

利用asp或jsp,flash怎样把数据库中的一张表中的所有记录读取并显示出来
收藏 0 赞 0 分享

Flash 中"设为首页"代码

Flash 中"设为首页"代码
收藏 0 赞 0 分享

FLEX TitleWindow之间数据传输的示例

在Flex里,一般的弹出窗口(除了Alert以外)都可以用TitleWindow组件完成,主窗口和TitleWindow的数据传输可以用以下方法
收藏 0 赞 0 分享

FLEX 仿Google联想框效果

FLEX--仿Google联想框效果--现在好多地方都用到了这样的效果,当然,现在Google下线了,不让用了,但是跟网上说的一样,想办法,它还是能出来的
收藏 0 赞 0 分享

FLEX 日期时间操作

找了很久,还是没有找到包含时间以下的东西,算了,还是麻烦一点,用日期加时间来处理吧.这里需要注意的是,它的时间日期跟其他语言是差不多的.所以要注意进行处理.
收藏 0 赞 0 分享

Flex 自动获取焦点 监听全局键盘事件

Flex 编程注意之自动获取焦点、监听全局键盘事件
收藏 0 赞 0 分享

Flex 编程注意之性能优化、垃圾回收的一些总结

自从开始做Flex、ActionScript 3.0的项目,我就一直与垃圾回收、性能优化这些问题打交道,因此也总结了一些优化的方案,同时在一些QQ群中也得到了一些“高人”的指点,因此将此内容记录一下。
收藏 0 赞 0 分享

Flex CategoryAxis 字体样式修改

Flex编程注意之修改CategoryAxis的字体样式(大小、颜色、粗斜体等)
收藏 0 赞 0 分享

Flex 编程注意之Flex Complier参数

由于上一篇文章《Flex编程注意之Namespace的用法》引出了Flex编译时自带的两个参数:-namespace -include-namespace,正好想到可以写一篇关于Flex Complier时的一些自定义参数。
收藏 0 赞 0 分享

Flex Namespace的用法

自定义自己组件的namespace呢 去Adobe那边的compiler参数查找了一下,发现可以利用-namespace、-include-namespaces这两个参数来指定自己的URL。
收藏 0 赞 0 分享
查看更多