Actionscript 3 BitmapData构造函数默认值似乎冲突
下面是我在这里给出的答案: 我知道,要获得一个透明的BitmapData对象,必须指定黑色的背景色,但在我被要求使用它之前,我从未费心检查原因。检查过之后,我想知道是否有一个原因我不明白为什么BitmapData构造函数的默认参数看起来有冲突 首先,这里是文档中定义的构造函数:Actionscript 3 BitmapData构造函数默认值似乎冲突,actionscript-3,constructor,bitmapdata,Actionscript 3,Constructor,Bitmapdata,下面是我在这里给出的答案: 我知道,要获得一个透明的BitmapData对象,必须指定黑色的背景色,但在我被要求使用它之前,我从未费心检查原因。检查过之后,我想知道是否有一个原因我不明白为什么BitmapData构造函数的默认参数看起来有冲突 首先,这里是文档中定义的构造函数: public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF) 请注
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
请注意,透明度的默认值为true。现在考虑文档关于透明参数的说明:
透明:布尔默认值=真-指定位图图像是否支持每像素透明度。默认值为true transparent。要创建完全透明的位图,请将transparent参数的值设置为true,将fillColor参数的值设置为0x00000000或0。将“透明”属性设置为false可能会导致渲染性能的轻微改进
似乎是说,除非将填充颜色设置为黑色,否则此参数是无用的。那么为什么默认的fillColor值是0xFFFFFFFF呢
我觉得这是不对的。如果开发人员希望获得无alpha通道的性能增益,则必须明确指定:
var bmd:BitmapData = new BitmapData(width,height,false);
var bmd:BitmapData = new BitmapData(width,height,true,0x000000);
如果需要透明的BitmapData,也必须明确指定:
var bmd:BitmapData = new BitmapData(width,height,false);
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
有人能给我解释一下当前构造函数的好处吗?当前构造函数没有好处-它只是默认的Adobe模式-我假设他们不希望人们抱怨在绘制displayobjects、movieclips等时,位图包含背景。老实说,我认为不违约更有意义,但这正是他们的选择,我们必须遵守 如果您真的想稍微提高速度,但不想指定该构造函数,请创建定义了该构造函数的最终子类:
public final class Surface extends BitmapData {
public function Surface(width:int, height:int, fillColor:uint = 0x000000):void {
super(width, height, false, fillColor);
}
}