Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3从1个BitmapData对象(加载的PNG)复制透明度并应用到另一个?_Flash_Actionscript 3_Bitmap_Bitmapdata - Fatal编程技术网

Flash AS3从1个BitmapData对象(加载的PNG)复制透明度并应用到另一个?

Flash AS3从1个BitmapData对象(加载的PNG)复制透明度并应用到另一个?,flash,actionscript-3,bitmap,bitmapdata,Flash,Actionscript 3,Bitmap,Bitmapdata,我在加载透明PNG时遇到问题。 我要做的是,从加载的png复制alpha通道,然后将此alpha通道应用于另一个Bitmapdata对象 有人能建议我怎么做吗?事实证明,我有一个类可以做到这一点: package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.geom.Point

我在加载透明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
是从中复制频道的位图。您可以将其修改为非常容易地使用纯位图数据对象。

如果这对您有效,请接受答案。