Исходя из ответа, который я дал здесь: AS 3 | Клонирование Png данных изображения
Я знал, что для получения прозрачного объекта BitmapData необходимо было указать черный цвет фона, но пока меня не вызвали, я никогда не удосужился проверить, почему. Проверив, мне интересно, есть ли причина, по которой я не вижу того, что кажется конфликтующим аргументами по умолчанию для конструктора BitmapData?
Во-первых, вот конструктор, определенный в документации:
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
Обратите внимание, что значение по умолчанию для прозрачности - true. Теперь посмотрим, что в документах говорится о прозрачном параметре:
transparent: Boolean (по умолчанию = true) - указывает, поддерживает ли растровое изображение прозрачность для каждого пикселя. Значением по умолчанию является true (прозрачный). Чтобы создать полностью прозрачное растровое изображение, задайте для параметра прозрачного параметра значение true, а для параметра fillColor - 0x00000000 (или 0). Установка для свойства transparent значения false может привести к незначительным улучшениям производительности рендеринга.
Кажется, что этот параметр бесполезен, если вы не установите цвет заливки на черный. Так почему же значение по умолчанию fillColor 0xFFFFFFFF?
Мне кажется, это неправильно. Если разработчик хочет увеличения производительности без альфа-канала, это должно быть явно указано:
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
или прозрачность должна по умолчанию ложь:
var bmd:BitmapData = new BitmapData(width,height); // faster, no-alpha BitmapData
Может кто-нибудь объяснить мне, в чем преимущество текущего конструктора?