AS3-Копировать прозрачность из 1 объекта BitmapData (загружен PNG) и применить к другому? - PullRequest
3 голосов
/ 18 октября 2011

У меня проблема с загрузкой прозрачных файлов png.Я пытаюсь скопировать альфа-канал из загруженного png-файла, а затем применить этот альфа-канал к другому объекту Bitmapdata.

Кто-нибудь может подсказать, как мне это сделать?

1 Ответ

6 голосов
/ 18 октября 2011

Как оказалось, у меня есть класс, который делает именно это:

package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BitmapDataChannel;
    import flash.geom.Point;
    import flash.geom.Rectangle;

    public class BitmapAlphaMerge
    {
        public static function merge (imgBitmap:Bitmap, maskBitmap:Bitmap) : Bitmap
        {
            var img:BitmapData = imgBitmap.bitmapData;
            var mask:BitmapData = maskBitmap.bitmapData;
            var mergeBmp:BitmapData = new BitmapData(img.width, img.height, true, 0);
            var rect:Rectangle = new Rectangle(0, 0, img.width, img.height);
            mergeBmp.copyPixels(img, rect, new Point());
            mergeBmp.copyChannel(mask, new Rectangle(0, 0, img.width, img.height), new Point(), BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA);
            return new Bitmap(mergeBmp);
        }
    }
}

Первый параметр imgBitmap - это изображение, к которому вы хотите добавить альфа-канал. maskBitmap - это растровое изображение, с которого вы копируете канал. Вы можете изменить это, чтобы использовать чистые объекты BitmapData довольно легко.

...