Actionscript 3中的外部配置文件

Jam*_*ong 3 apache-flex actionscript-3 mxmlc

我需要能够将外部配置文件加载到我的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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用mxmlc它编译它时,它成功编译没有错误.当我运行SWF时,它会加载所有Flixel菜单然后挂起.

如果我注释掉该[Embed(source = '../../data/map.txt'行,它会编译并且不会挂起.

为什么这个嵌入导致冻结?

mxmlc的版本信息:

Adobe Flex Compiler (mxmlc)
Version 4.0.0 build 14159
Run Code Online (Sandbox Code Playgroud)

编辑

事实证明错误没有正确显示,但这是我从尝试嵌入时得到的:

VerifyError: Error #1014: Class mx.core::ByteArrayAsset could not be found.

谷歌出现了一大堆有同样问题的人,但没有明显的解决方案.

import mx.core.ByteArrayAsset; ByteArrayAsset

也没有帮助.

Jam*_*ong 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