智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...

导航

JSFL 备份

Posted on 2012-11-05 14:46  Bill Yuan  阅读(382)  评论(0)    收藏  举报

1、 JSFL api 下载地址: http://help.adobe.com/zh_CN/flash/cs/extend/flash_cs5_extending.pdf

2、 2个实例:

  1> 转自:http://bbs.9ria.com/thread-26288-1-1.html

  生成游戏素材包

    1、选择素材路径  路径里的文件夹结构和生成的库文件夹结构一致,库中项目及其导出类的名称和文件名(不包括后缀)一致
    2、选择生成swf文件的路径  程序会生成swf和fla文件
    3、之后就是自动生成过程了

fl.outputPanel.clear();
var dom = fl.createDocument();
var resourcePath=fl.browseForFolderURL("请选择素材路径:");
var swfPath=fl.browseForFolderURL("请选择生成swf文件的路径:");
var lib=dom.library;
var bitmapFolder="图素";
var mcFolder="导出类";
analyseFolder(resourcePath,"");
dom.exportSWF(swfPath+"/resourceLib.swf",true);
fl.saveDocument(dom,swfPath+"/resourceLib.fla");
dom.close(false);

//递归处理每个文件夹
function analyseFolder(folderPath,libFolder)
{
        var fileList=FLfile.listFolder(folderPath,"files");
        for(var i=0;i<fileList.length;i++)
        {
                var fileName=fileList[i];
                var ind=fileName.indexOf(".");
                //如果没有后缀或后缀不正确则略过
                if(ind<=0||ind==(fileName.length-1))
                {
                        continue;
                }
                //后缀
                var ext=fileName.substr(ind+1,fileName.length-ind);
                ext=ext.toLowerCase();
                //不是图片则略过
                if(ext!="bmp"&&ext!="gif"&&ext!="jpg"&&ext!="jpeg"&&ext!="png")
                {
                        continue;
                }
                //不要后缀的文件名
                shortName=fileName.substr(0,ind);
                var filePath=folderPath+"/"+fileName;
                //fl.trace(filePath);
                //导入图片
                dom.importFile(filePath,true);
                //选择项
                lib.selectItem(fileName);
                //放到舞台上
                lib.addItemToDocument({x:0,y:0});
                dom.selectAll();
                dom.convertToSymbol("movie clip",shortName,"top left");
                lib.selectItem(shortName);
                lib.setItemProperty("linkageImportForRS",false);
                lib.setItemProperty("linkageExportForAS",true);
                lib.setItemProperty("linkageExportForRS",false);
                lib.setItemProperty("linkageExportInFirstFrame",true);
                lib.setItemProperty("linkageIdentifier",shortName);
                dom.selectAll();
                dom.deleteSelection();
                var f=libFolder;
                lib.newFolder(bitmapFolder+f);
                lib.newFolder(mcFolder+f);
                lib.moveToFolder(bitmapFolder+f,fileName);
                lib.moveToFolder(mcFolder+f,shortName);        
        }        
        //子文件夹
        var folderList=FLfile.listFolder(folderPath,"directories");
        for(var j=0;j<folderList.length;j++)
        {
                analyseFolder(folderPath+"/"+folderList[j],libFolder+"/"+folderList[j]);
        }
}

  2>转自: http://www.daylyn.org/post/101.html

使用JSFL自动生成元件AS3代码声明和赋值语句
var selectedItems = fl.getDocumentDOM().selection; //获取文档所选对象数组  
var resultDesc = ""; //结果声明语句部分  
var resultAssignment = ""; //结果赋值语句部分  
var libitem; //库元件  
  
//循环选中的库元件  
var selItems = fl.getDocumentDOM().library.getSelectedItems();   
var childItem = selItems[0];  
fl.outputPanel.trace(childItem.name);  
fl.outputPanel.trace(childItem.linkageExportForAS);  //linkageBaseClass.toString().split(".").pop());  
fl.outputPanel.trace(childItem.linkageClassName);  
fl.outputPanel.trace(childItem.linkageBaseClass); //默认基类 则是空串  
resultDesc = "private var _ui:" + "Sprite";  
  
for(var i = 0 ; i < selectedItems.length; i ++)  
{  
    var item = selectedItems[i];  
      
    if(item.libraryItem)  
    {  
        libitem = item.libraryItem;  
        if(isComponent(libitem.name))  
        {  
            resultDesc += "private var _"+item.name+":"+getClassOfComponent(item.libraryItem.name)+";\n";  
            //resultAssignment += "_" + item.name + " = " + "_ui[" + item.name + "]"; //也可以用getChildByName方法  
              
        }  
        else if(libitem.linkageBaseClass)  
        {  
            resultDesc += "private var _"+item.name+":"+(libitem.linkageBaseClass.toString().split(".").pop())+";\n";  
            //resultAssignment += "_" + item.name + " = " + "_ui[" + item.name + "]";  
        }  
        else if(item.name)  
        {  
            resultDesc += "private var _"+item.name+":MovieClip;\n";  
            //resultAssignment += "_" + item.name + " = " + "_ui[" + item.name + "]";  
        }  
        resultAssignment += "_" + item.name + " = " + "_ui[\"" + item.name + "\"]" + ";\n";  
          
    }  
    else if(item.elementType == "text"&&item.name)  
    {  
        resultDesc += "private var _"+item.name+":TextField;\n";  
        resultAssignment += "_" + item.name + " = " + "_ui[\"" + item.name + "\"]" + ";\n";  
    }  
      
      
}  
/* 
    是否为组件 
*/  
function isComponent(libItemName)  
{  
    fl.outputPanel.trace(libItemName);  
    return libItemName.match(/Components\//i);  
}  
/* 
    获取组件类名 
*/  
function getClassOfComponent(libItemName)  
{  
    return libItemName.match(/Components\/([a-zA-Z0-9_-]*)/i)[1];  
}  
fl.outputPanel.trace(resultDesc); //打印结果  
fl.outputPanel.trace(resultAssignment);