繁体   English   中英

AS3加载程序忽略.png透明度

[英]AS3 Loader ignoring .png transparency

在Flash CS4中,打开一个新文档,将背景色更改为可识别的颜色(例如洋红色),然后添加以下代码:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event){addChild(e.target.content);});
loader.load(new URLRequest('newsnakelub8.png'));

...用您碰巧可以使用的任何文件名替换.png文件名,我抓住了这个文件名。 编译.swf,让我感到失望-正常透明的.png现在具有白色背景,不允许Flash背景色显示出来。

我在某处缺少神奇的'treatAsPNG24'属性吗?

图像实际上没有透明的背景...

替代文字
(来源: liranuna.com

为了您的愉悦,固定图像:

替代文字

问题是您的png。 尝试在Photoshop中打开它,那里也不是透明的。 尝试使用其他工具(在Google上进行搜索,或通过Flash或PS发布),即可正常使用。 (也就是说,没有要调用的设置,您只需要一个适当的图像即可。)

    public static function getSource(stringURL:String):void {
        currentProcessedURL = stringURL;
        var loader:Loader = new Loader();
        var request:URLRequest = new URLRequest(stringURL);
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
        loader.load(request);               
    }

    private static function onComplete(e:Event):void {
        try{
            var bitMap:BitmapData = new BitmapData(
                (e.currentTarget as LoaderInfo).loader.width,
                (e.currentTarget as LoaderInfo).loader.height);
            bitMap.draw((e.currentTarget as LoaderInfo).loader);
            var icon:BitmapSymbol = new BitmapSymbol();
            icon.source = bitMap;
            standardStringToImage[currentProcessedURL] = icon;      
            getSource(ALL_ARRAY.pop());
        } catch(e:Error) {
            trace(e);
        }           
    }

这样做会加载带有白色背景的图像。 需要将参数,true,0x00ffffff添加到BitmapData构造函数中。 我找到此线程是因为我的PNG带有白色背景,而且我知道它们具有透明背景。 因此,希望这将对遇到与我一样的问题的任何人有所帮助。

既然最好教你怎么钓鱼...

如果您使用的是GIMP 2 (像啤酒一样免费),则只需打开图像,然后选择“ 图层| 透明... | 将颜色设置为Alpha,然后选择要转换为透明背景的颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM