AS3: дублирование изображения PNG приводит к потере прозрачности - PullRequest
0 голосов
/ 11 ноября 2011

Я использую LoaderMax для загрузки внешнего PNG и отображения его во многих местах, поэтому я использую следующий код для дублирования изображения:

var cd:ContentDisplay = ContentDisplay(loader.getContent("name"));
var b1 = Bitmap(cd.rawContent);
var old = b1.bitmapData;
var bmp = new Bitmap(b1);

container.addChild(bmp);

Исходное изображение имеет 50% на альфа-канале,но когда я создаю новое растровое изображение из того же объекта bitmapData, он не сохраняет альфа-канал.

Если я пытаюсь скопировать альфа-канал (см. код ниже; если я правильно понимаю, альфа-каналкопируется из себя в себя) - прозрачность на новом изображении, но код выдает ошибку ...

bmp.copyChannel(old, new Rectangle(0, 0, old.width, old.height), new Point(), BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA);

Ошибка:

ReferenceError: Error #1069: Property copyChannel not found on flash.display.Bitmap and there is no default value.
    at barmask/frame1()

Как мне продублироватьPNG и поддерживать альфа-прозрачность ... желательно без ошибок?

Ps Пожалуйста, простите за любые очевидные ошибки, я новичок ActionScript ...

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011

Его ответ был очень близок к завершению:

new BitmapData(w, h, true, 0); 

Последнее свойство, гарантирующее, что вспышка не включает фон в новом изображении. Это должно решить вашу проблему. Оно должно быть точно "0", а не 0x000000.

0 голосов
/ 15 мая 2013

Растровое изображение не имеет метода copyChannel, так как в сообщении об ошибке указано:)

Вместо этого:

bmp.copyChannel(...

Вам необходимо сделать следующее:

bmp.bitmapData.copyChannel(...
0 голосов
/ 11 ноября 2011

создайте свой экземпляр BitmapData, передав в конструктор 3 параметра: new BitmapData(w, h, true), Boolean значение - прозрачностьтакже проверьте transparent свойство источника BitmapData

...