AS3 Loader忽略.png透明度

时间:2009-07-09 06:37:44

标签: flash actionscript-3 png transparency loader

在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文件名替换为任何碰巧方便的文件名,我抓住了this one。编译.swf,让我叹为观止 - 通常透明的.png现在有一个白色的背景,不允许闪光背景颜色透过。

我在某处遗失了一个神奇的'treatAsPNG24'属性吗?

4 个答案:

答案 0 :(得分:6)

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

alt text
(来源:liranuna.com

为了您的乐趣,固定图像:

alt text

答案 1 :(得分:1)

问题是你的png。尝试在Photoshop中打开它,它也不会透明。尝试不同的一个 - 谷歌,或从Flash或PS发布一个 - 它会工作正常。 (也就是说,没有设置可以调用,你只需要一个合适的图像。)

答案 2 :(得分:1)

    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,我知道他们有透明的背景。所以,希望这会帮助那些遇到同样问题的人。

答案 3 :(得分:-1)

因为最好教你如何钓鱼......

如果你正在使用GIMP 2(啤酒中免费),只需打开图片,选择图层|透明度...... |颜色到Alpha 并选择要转换为透明背景的颜色。