代码之家  ›  专栏  ›  技术社区  ›  Trap

不需要下载就可以访问远程SWF吗?

  •  0
  • Trap  · 技术社区  · 15 年前

    提前谢谢。

    4 回复  |  直到 15 年前
        1
  •  1
  •   George Profenza    15 年前

    不要这样认为,在使用getDefinition()之前,您可能需要加载整个swf。

    我能想到的一个解决方法是将swf分解成许多不同的部分。

    看一看 BulkLoader ,它可以节省你一些时间。

    如果您使用的是flashide,那么我编写了一个简单的jsfl脚本,它应该 不那么乏味:

    var doc   = fl.getDocumentDOM();
    var dir   = 'file:///' + doc.path.substr(0,(doc.path.lastIndexOf('/')+1));
    var lib   = doc.library;
    var code  = 'var loader : BulkLoader = new BulkLoader("assets");\n';
    var items = lib.items;
    var iNum  = items.length;
    var path;
    var name;
    
    fl.outputPanel.clear();
    
    for(var i = 0 ; i < iNum ; i++){
        if(items[i].linkageExportForAS){
            name = items[i].linkageClassName;
            path = dir+name+'.swf';
            items[i].exportSWF(path);
            code += 'loader.add("'+(name+'.swf')+'", {id:"'+name+'"});\n';
        }
    }
    
    fl.clipCopyString(code);
    fl.outputPanel.trace('symbols exported as swfs, code is in your clipboard');
    

    它所做的只是循环库项,对于为actionscript导出的符号,它导出一个swf文件(其中类名用作文件名),并生成一个大容量加载程序片段。

    将其放入Flash的最简单方法是:

    1. 创建新的 Flash JavaScript 文件 JavaScript文件)
    2. 粘贴代码
    3. 把文件另存为ASSymbolsToFiles之类的。文件应该 这意味着你可以通过 命令 菜单。你也可以 如果需要,设置键盘快捷键。

    生成的代码可能并不完美,但它为您提供了一个想法,并且应该具有足够的可读性,以便进行简单的调整。

    嗯, 乔治

        2
  •  1
  •   Simon Groenewolt    15 年前

    你不能加载一个主权财富基金的一部分,但是,你可以生成几个较小的主权财富基金,而不是一个大的。要做到这一点,您需要知道如何在swf中包含和排除类,这样您就可以构建一个或多个包含共享类的基本swf,以及一大堆只包含几个类并且正在使用基本swf中的共享类的“扩展”swf。

    command-line options of mxmlc (免费flexsdk附带的actionscript/mxml编译器)——我不知道是否可以使用flashide。

    当然,这会使你的加载更复杂一些,但它会节省大量的带宽。

        3
  •  1
  •   Matt MacLean    15 年前

    为此,请将以下内容另存为“ExportSymbols.jsfl”

    //prompt user for directory to export symbols to
    var dir = fl.browseForFolderURL('Select export folder');
    
    //get all the library items
    var symbols = fl.getDocumentDOM().library.items;
    
    for ( var i=0; i<symbols.length; i++ ) {
        var symbol = symbols[i];
        var name = symbol.name;
        var linkageClassName = symbol.linkageClassName;
        if ( linkageClassName != "" ) {
            var filename = dir + "/" + linkageClassName + ".swf";
            symbol.exportSWF(filename);
            fl.trace("Exported '" + name + "' to '" + filename + "'");
        }
    }
    

    然后,在Flash中选择Command>运行命令。。。并浏览到ExportSymbols.jsfl文件。

    该脚本将提示您输入导出目录,然后将导出所有具有指定为单独SWF文件的linkageClassName的符号。

    希望有帮助。

        4
  •  0
  •   Carlo    15 年前

    如果它只是一个符号库,为什么不拆分它呢?

    顺便说一句,我确信这是不可能的,因为要知道符号在哪里(以字节为单位),你必须下载整个容器。