【问题标题】:Actionscript 3: Loading ai files dynamically?Actionscript 3:动态加载ai文件?
【发布时间】:2010-02-08 10:33:39
【问题描述】:

是否可以动态加载矢量文件,在本例中为 Actionscript 3 中的 .ai 文件?您可以将它们导入舞台,但我想动态执行此操作,有没有办法做到这一点?

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    您可以将矢量数据保存为 XML 格式,例如 SVG(Illustrator 支持这一点),然后使用 URLLoader 加载它,解析数据并将其绘制到 Shape 对象中。

    网上有一些 AS3 SVG 解析器:http://www.google.com/search?q=svg+as3

    【讨论】:

    • Combo "AI->SVG--load->Flash" 不是最好的变体。在 Illustrator 中导出到 SVG 总是很糟糕。
    【解决方案2】:

    对于 AI(和许多其他格式),您可以使用 Zaail-lib。它很旧,可能是遗产,但它有效。 http://zaalabs.com/2010/04/introducing-zaail-40-image-format-support-for-flash/

    【讨论】:

    • 另外,如果我没记错的话,我们可以从 Illustrator 导出 SWF。
    【解决方案3】:

    当然,

    您可以使用 URLLoader 类在运行时加载它:

    var _loader:URLLoader;
    var request:URLRequest = new URLRequest("http://yourserver.com/graphic.ai");
    var loader:URLLoader = new URLLoader();
    loader.addEventListener(Event.COMPLETE, completeHandler);
    loader.load(request);
    
        private function completeHandler(e:Event):void {
            var content:DisplayObject = _e.target.content;
            addChild(content);
        }
    

    我没有测试过,但我认为这行得通!

    【讨论】:

    • “_e.target.content”应该是“e.target.data”。我认为您还需要在编译器允许您将其放入 DisplayObject 变量之前对其进行类型转换。也许您在考虑 Loader 而不是 URLLoader?当前代码将无法工作,因为 Flash 不知道刚刚加载了哪种数据(可能是 XML、二进制数据、PNG 等),因此无法将 AI 文件转换为 DisplayObject,因为它不知道加载的数据是一个 AI 文件。我不确定 Flash 是否可以在运行时转换 AI 文件。
    • 呃,你是对的。它必须是 Loader 而不是 URLLoader。但我不确定类型转换,我稍后会检查它;-)
    猜你喜欢
    • 2012-07-15
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2021-07-23
    • 2010-10-19
    • 1970-01-01
    • 2010-11-08
    • 2013-05-18
    相关资源
    最近更新 更多