zoukankan      html  css  js  c++  java
  • 批量发布Flash文件

    我现在主要的工作是负责做多媒体动画了,我不会绘画,也不懂设计,不过我会写程序。好呆也是做过.net编程的。

    大家Flash动画做了上千个,要发布产品了,于是研发主管招唤大家一起发布,可我是个懒人,首先就想,有没有批量发布的程序。

    网上搜了一下,还真有。是用jsfl写的。

    代码看懂了,又找了些jsfl的教程看了看,于是决定扩展一下功能,写个flash插件出来,至少带个操作界面,用时方便,毕竟这个东东不只是我用。

    这个flash插件功能很简单,能够批量发布一个或多个文件夹下的fla文件,包括其子目录下的;设定好,让它慢慢发布就行了,还算实用,至少能满足我现在的工作。

    首先是一个UI。 

    PublishBatUI.xml

    <?xml version="1.0" encoding="utf-8"?>
    <dialog buttons="accept, cancel"  title="批量编译Flash文档" >
      <vbox>
      <checkbox id="cbSubDir" label="是否包括子文件夹" checked="true" accesskey="s" />
      <!--<checkbox id="cbOnlyUnpublished" label="是否只发布更新过的Flash" checked="true" accesskey="u" />-->
      <label value="Flash文档所在路径: (多个路径请换行)" />
      <!--<button target="mm" id="btnSelPath" label="选择文件夹"/>-->
      <textbox id = "tbPaths" size="100" height="300" multiline="true"/>
       <!-- <label value="发布后的路径:(默认为.fla文件的当前路径)" />
    <textbox id = "pubpaths" size="100" multiline="false"/>
      <checkbox id="cbIsSaveFlaPath" label="是否按.fla文件存放路径,保存发布后的.swf文件" checked="true" accesskey="p" />-->
      <vbox>
    </dialog>

    文件名,就是PublishBatUI.xml。

    然后就是Jsfl代码了。 

    批量发布Fla.jsfl

    //批量发布Flash文件。
    var tempDoc=undefined;
    if(fl.documents.length==0){
     //xmlPanel need a document, if there is none, create a temp document
     tempDoc=fl.createDocument();
    }
    //创建操作界面
    useUI = fl.getDocumentDOM().xmlPanel(fl.configURI + "Commands/PublishBatUI.xml");
    //计数
    var pubNum=0;
    if(tempDoc){
     //close temp document
     fl.closeDocument(tempDoc);
    }
    if(useUI.dismiss=="accept"){
     //是否包括子目录
     var isSubDir=useUI.cbSubDir;
     //fl.trace(isSubDir);
     //是否只发布更新后的
     //var isOnlished=useUI.cbOnlyUnpublished;
     //源文件路径
     var txtPaths=useUI.tbPaths.split("\r\n");
     //打开选择窗
     //var folderURI = fl.browseForFolderURL("请选择要编译的文件夹:");
     //fl.trace(folderURI)
     for(var i=0; i<txtPaths.length; i++)
     {
      var path=txtPaths[i]="file:///"+txtPaths[i].split(":").join("|").split("\\").join("/");
      pubBatFla(path,isSubDir);
     }
     fl.trace("操作完成,累计生成"+pubNum+"个。");
    }
    //
    //批量发布Fla文件
    //flaDir:fla所在的文件夹;
    //isSubDir:是否编译子文件夹下的fla,true为编译为子文件夹;
    function pubBatFla(flaDir,isSubDir)

     //当前目录下的文件
     var files= FLfile.listFolder(flaDir,"files");
     for (var i=0; i<files.length; i++) {
      pubFla(flaDir+"/"+files[i]);
     }
     //不再编译子文件夹
     if(!isSubDir)return;
     //当前目录下的子目录
     var subDir= FLfile.listFolder(flaDir,"directories");
     for (var j=0; j<subDir.length; j++) {
      pubBatFla(flaDir+"/"+subDir[j],isSubDir);
     }
    }
    //发布fla文件
    //fileURL:完整的Fla文件路径
    function pubFla(fileURL)
    {  
     if(fileURL.indexOf(".")>-1)
     {
        //当前文件后缀名
      var flExt= fileURL.substr(fileURL.lastIndexOf("."));  
      //如果是fla文件,则执行发布
      if(flExt.toLowerCase() == ".fla"){   
       var doc=fl.openDocument(fileURL);
       doc.publish();
          doc.close();
       pubNum++;
      }
     }
    }

    文件名保存为“批量发布Fla.jsfl”

    将两个文件放置到如下目录下:

    如果是Flash8,放到C:\Documents and Settings\Administrator\Local Settings\Application Data\Macromedia\Flash 8\zh_cn\Configuration\Commands

    如果是Flash CS3,放到C:\Documents and Settings\Administrator\Local Settings\Application Data\Adobe\Flash CS3\zh_cn\Configuration\Commands

    重新打开Flash,不管是flash8还是flash cs3,在其主菜单“命令”中,都会看到“批量发布fla”的命令。

    下载:批量发布flash.rar

  • 相关阅读:
    LPC 网络编程
    LPC 语言基础
    (lua) 基于cocos 的插入光效
    lua_table 学习
    lua 语言基础
    C++ 三大特性:封装、继承、多态性
    C++的编译预处理
    C++ 用变量定义数组
    C++ STL常用容器浅析
    拦截器的文章 写的可以!
  • 原文地址:https://www.cnblogs.com/2hill/p/1700246.html
Copyright © 2011-2022 走看看