3

我需要能够将外部配置文件加载到我的 flex 应用程序中。我读过这可以使用嵌入,只要 mimeType 设置为 application/octet-stream。

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

也无济于事。

4

2 回答 2

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

于 2010-07-09T02:49:44.717 回答
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);
于 2010-07-03T01:35:38.160 回答