【问题标题】:AS3 Loader ignoring .png transparencyAS3 加载程序忽略 .png 透明度
【发布时间】:2009-07-09 06:37:43
【问题描述】:

在 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”属性我在某处丢失了?

【问题讨论】:

  • 哇,这有点尴尬 - 在我的辩护中,出现在资源管理器预览窗格中的图像显示为透明背景 - 但你是对的,我应该在 Photoshop 中打开它确保;确定。好吧,没有什么比这更复杂的了!
  • 我讨厌这是一个“热门问题”,因为“问题”实际上只是用户错误。也许在您尝试显示内容之前检查并仔细检查您的内容是一种警告。

标签: flash actionscript-3 png transparency loader


【解决方案1】:

图片实际上没有透明背景...


(来源:liranuna.com)

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

【讨论】:

  • 我已经做好了防守的准备,然后说,“嗯,是的,当然可以,”但你说得对,真的没有。我觉得自己很笨。
【解决方案2】:

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

【讨论】:

    【解决方案3】:
        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);
            }           
        }
    

    这样做会加载具有白色背景的图像。参数 , 是的,0x00ffffff 需要添加到 BitmapData 构造函数中。我发现这个线程是因为我的 PNG 加载了白色背景,而且我知道它们具有透明背景。所以,希望这能帮助遇到我遇到同样问题的任何人。

    【讨论】:

    • +1 用于解决我来到这里的问题。我想这是一个比导入没有透明度的 png 更常见的错误。我注意到的是,如果 .png 文件中具有透明度,则无论true, 0x0 参数如何,该部分都是透明的,但是如果您对比 .png 更大的区域进行 blit,则边框将仅是透明的使用true 参数。
    【解决方案4】:

    既然教你钓鱼比较好……

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

    【讨论】:

    • “颜色到 Alpha”有时会使事情变得更糟,我建议使用“选择颜色”工具或魔术棒“添加 Alpha 通道”,然后在这种图像情况下擦除颜色。跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-10-12
    • 2016-05-23
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多