【发布时间】:2011-08-08 17:24:51
【问题描述】:
根据我在这里给出的答案:AS 3 | Cloning Png image data
我知道要获得一个透明的 BitmapData 对象,必须指定一个黑色的背景颜色,但在我被要求使用它之前,我从来没有费心去检查原因。经过检查,我想知道是否存在我看不到 BitmapData 构造函数的默认参数冲突的原因?
首先,这是文档中定义的构造函数:
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
请注意透明度的默认值为 true。现在考虑一下文档对透明参数的看法:
transparent:Boolean (default = true) — 指定位图图像是否支持逐像素透明度。默认值为真(透明)。要创建完全透明的位图,请将 transparent 参数的值设置为 true,并将 fillColor 参数的值设置为 0x00000000(或 0)。将 transparent 属性设置为 false 可能会略微提高渲染性能。
好像说这个参数没用,除非你把填充颜色设置为黑色。那么为什么默认的fillColor值是0xFFFFFFFF呢?
这对我来说似乎是错误的。如果开发者想要获得无 alpha 通道的性能增益,则必须明确指定:
var bmd:BitmapData = new BitmapData(width,height,false);
如果需要透明的 BitmapData,也必须明确指定:
var bmd:BitmapData = new BitmapData(width,height,true,0x000000);
因此,在不接受性能损失的情况下,我们绝对不能依赖最短的构造函数形式,我不明白为什么。当然,fillColor 应该默认为黑色:
var bmd:BitmapData = new BitmapData(width,height); // transparent BitmapData
或者透明度应该默认为false:
var bmd:BitmapData = new BitmapData(width,height); // faster, no-alpha BitmapData
谁能向我解释当前构造函数的好处是什么?
【问题讨论】:
标签: actionscript-3 constructor bitmapdata