我需要能够将外部配置文件加载到我的flex应用程序中。我已经读过,只要将mimeType设置为application / octet-stream,就可以使用embeds。
package learning {
import org.flixel.*;
public class PlayState extends FlxState {
[Embed(source = "../../data/tiles.png")] private var _tiles:Class;
[Embed(source = '../../data/map.txt', mimeType = "application/octet-stream")] private var ExternalMapData:Class;
public var txt:FlxText;
public var player:FlxSprite;
override public function create():void {
bgColor = 0xffaaaaaa;
super.create();
}
override public function update():void {
super.update();
}
}
}
当我使用mxmlc
编译它时,它成功编译没有错误。当我运行SWF时,它会加载所有Flixel菜单然后挂起。
如果我注释掉[Embed(source = '../../data/map.txt'
行,它会编译并且不会挂起。
为什么这个嵌入导致冻结?
mxmlc的版本信息:
Adobe Flex Compiler (mxmlc)
Version 4.0.0 build 14159
修改
事实证明错误没有正确显示,但这是我从尝试嵌入时得到的:
VerifyError: Error #1014: Class mx.core::ByteArrayAsset could not be found.
import mx.core.ByteArrayAsset; ByteArrayAsset
也无济于事。
答案 0 :(得分:8)
啊哈!事实证明解决方案非常简单 - 运行时共享库没有静态链接到swf,并且在运行时期间没有正确设置路径以进行访问。解决方案很简单:
修改flex-config以说明
<static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>
或手动将参数传递给mxmlc
mxmlc -static-link-runtime-shared-libraries=true -debug=true Main.swf -- Main.as
答案 1 :(得分:3)
我将用另一个问题的答案回答这个问题:
[Embed(source = "ExampleText.txt", mimeType = "application/octet-stream")]
protected var AAAAAA:Class;
var tmp:ByteArray = new AAAAAA();
var result:String = tmp.readMultiByte(tmp.bytesAvailable, tmp.endian);