我有一个涉及加载透明png的问题。
我想做的是从已加载的png复制Alpha通道,然后将此Alpha通道应用于另一个Bitmapdata对象。

谁能建议我该怎么做?

最佳答案

事实证明,我有一个类可以做到这一点:

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是您要将Alpha通道添加到的图像。 maskBitmap是您要从中复制通道的位图。您可以修改它以非常容易地使用纯BitmapData对象。

关于flash - AS3-从1个BitmapData对象(已加载PNG)复制透明度,并应用于另一个对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7809696/

10-09 08:28