我正在使用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项目
答案 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] 强>
我知道这个答案已被接受,但这里还有额外的额外奖励。
答案 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 );
}
}
}