问题是您的项目库路径中没有framework.swc
// core.swc
(flex.swc
取决于您的 Flex SDK 版本),但是链接此 swc 会导致使用 mxmlc 编译时应用程序的大小增加约 200kb,即使您没有不要直接使用 flex。
我建议您执行以下操作(我们在纯 as3 项目中执行此操作):
flex4embedapi
1.创建名为(或flex3embedapi
取决于您在主项目中使用的Flex SDK版本)的flex库项目
2.创建文件classes.as
:
package
{
import mx.core.BitmapAsset;
import mx.core.ByteArrayAsset;
import mx.core.FontAsset;
import mx.core.SoundAsset;
import mx.core.SpriteAsset;
public class classes
{
public function classes()
{
ByteArrayAsset;
SpriteAsset;
BitmapAsset;
FontAsset;
SoundAsset;
}
}
}
3.确保该类包含在包含列表(Project->Properties->Flex library build path->Classes
)的库中
4.复制flex4embedapi.swc
到项目的 lib 文件夹(带有链接的 swc 库的文件夹)。
现在一切都应该工作了。
UPD:为了快速修复,请尝试使用 Flex SDK 4.6 (-load-config=config.xml) 的此配置文件,它 100% 适用于 as3 项目,无需任何其他链接库:
<flex-config>
<target-player>11.1.0</target-player>
<default-frame-rate>40</default-frame-rate>
<compiler>
<locale>
<locale-element>en_US</locale-element>
</locale>
<external-library-path>
<path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element>
</external-library-path>
<library-path>
<path-element>${flexlib}/libs/core.swc</path-element>
<path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}</path-element>
</library-path>
<optimize>true</optimize>
<warn-no-constructor>false</warn-no-constructor>
</compiler>
</flex-config>
测试项目包含唯一的主类embedtest.as
:
package
{
import flash.display.Sprite;
import flash.utils.ByteArray;
public class embedtest extends Sprite
{
[Embed(source="somefile.txt", mimeType="application/octet-stream")]
private static const some_file:Class;
public function embedtest()
{
var b:ByteArray = new some_file();
trace(b.length);
}
}
}