智慧 + 毅力 = 无所不能

正确性、健壮性、可靠性、效率、易用性、可读性、可复用性、兼容性、可移植性...
随笔 - 991, 文章 - 0, 评论 - 27, 阅读 - 341万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

JSFL 备份

Posted on   Bill Yuan  阅读(364)  评论(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); 

  

(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2010-11-05 VC2008编译STLPort
2010-11-05 boost::asio 的同、异步方式
2010-11-05 以boost::function和boost:bind取代虚函数
2010-11-05 Boost.Asio和ACE之间关于Socket编程的比较
2010-11-05 知识框架
2010-11-05 ACE的Socket
点击右上角即可分享
微信分享提示