关于在AS3项目中嵌入资产(图像)

时间:2011-09-16 10:01:49

标签: actionscript-3 sdk flex4 embed assets

我正在使用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项目

2 个答案:

答案 0 :(得分:6)

您可以尝试使用“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

<强> [UPDATE]

我知道这个答案已被接受,但这里还有额外的额外奖励。

enter image description here

enter image description here

答案 1 :(得分:1)

您需要将图像添加到Displaylist:

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 );
        }

    }

}