【问题标题】:About embeding assets(images) in AS3 project关于在 AS3 项目中嵌入资产(图像)
【发布时间】:2011-11-18 13:45:17
【问题描述】:

我正在使用 flex sdk 4.5.1 和 flash develop 来编译我的 AS3 项目。我有小图像,大约 12KB,使用 Loader 类加载它们很愚蠢,所以嵌入是更好的解决方案。

但是,当我的 Main 类顶部的这一行未注释时,我得到空白 swf

[Embed(source = "../assets/gui/play1.png", mimeType = "image/png")]
private var PlayUpImg:Class;

(当我注释掉时,编译好的 swf 就可以了)

可能是什么错误。为什么我会得到空白的 swf?

我正在 FlashDevelop 中开发纯 AS3 项目

【问题讨论】:

    标签: actionscript-3 sdk flex4 embed assets


    【解决方案1】:

    您可以尝试使用“application/octet-stream”mimetype 将 png 图像嵌入为任意二进制数据。然后,您将使用 Loader 对象的 loadBytes() 方法来加载 png 图像的二进制数据。下面是一个例子:

    package
    {
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
    
        [SWF(width="256", height="256", backgroundColor="#FF0000")]
        public class Main extends Sprite 
        {
            [Embed(source = "assets/ie9.png", mimeType = "application/octet-stream")]
            private var IE9:Class;
    
            public function Main():void 
            {
                if (stage) init();
                else addEventListener(Event.ADDED_TO_STAGE, init);
    
            }// end function
    
            private function init(e:Event = null):void 
            {
                removeEventListener(Event.ADDED_TO_STAGE, init);
    
                var loader:Loader = new Loader();
                loader.loadBytes(new IE9());
                addChild(loader);
    
            }// end function
    
        }// end class
    
    }// end package
    

    [更新]

    我知道这个答案已被接受,但这里有一个额外的好处。

    【讨论】:

    • 这也适用于从已存储在 SQLite Db 中的 BLOB 加载 png,这是简单地将其嵌入到 swf 中的替代方法。
    【解决方案2】:

    您需要将图像添加到显示列表中:

    package
    {
    
        import flash.display.Bitmap;
    import flash.display.Sprite;
    
        public class Main extends Sprite{
    
            [Embed(source = "../assets/gui/play1.png", mimeType = "image/png")]
            private var PlayUpImg : Class;
    
            public function Main()
            {
                var myImage : Bitmap = new PlayUpImg();
                addChild( myImage );
            }
    
        }
    
    }
    

    【讨论】:

    • 试过了,swf还是空白的。
    • 这可能是我在纯 AS3 项目上工作的问题。我应该在 Flash 开发中从事 Flex 4 项目吗?
    • 不,应该可以。您可以发布图片或尝试其他图片吗?
    • 尝试使用其他 png 即使使用 Loader 类工作,但使用 Embed 指令我仍然得到整个 swf 空白。 Flex 中是否可能存在一些错误配置?
    • flex sdk 4.5.1 好像有一些问题,但我不知道。我想这是非常新的版本。我尝试使用旧版本的 flex sdk 4.0 并且工作得很好。它编译并显示嵌入的图像。所以我的建议是使用旧的 flex sdk 版本:)
    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2015-01-08
    • 2012-07-19
    • 1970-01-01
    • 2014-06-14
    相关资源
    最近更新 更多