代码之家  ›  专栏  ›  技术社区  ›  Jamie Wong

ActionScript 3中的外部配置文件

  •  3
  • Jamie Wong  · 技术社区  · 14 年前

    我需要能够将外部配置文件加载到我的flex应用程序中。我已经读到,只要mimetype设置为application/octet流,就可以使用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' 行,它编译而不挂起。

    为什么这种嵌入会导致冻结?

    MXML的版本信息:

    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

    也无济于事。

    2 回复  |  直到 14 年前
        1
  •  8
  •   Jamie Wong    14 年前

    啊哈!结果证明,解决方案非常简单——运行时共享库没有静态链接到SWF,并且在运行时没有为访问正确设置路径。解决方案很简单:

    或者修改flex配置

    <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

        2
  •  3
  •   user216441    14 年前

    我将用另一个问题的答案来回答这个问题:

    [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);