利用JSFL制作swf素材包
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-07
想利用ria来生成swf,可以当看过swf文件规范之后感觉这样做似乎过于复杂了。以前衰人给过一个使用Flash CS3 IDE的扩展来制作的方式,没有怎么深入去看。周末仔细研究了一番,感觉走了弯路了。JSFL已经可以通过很简单的代码来处理所有素材包的制作了,何必非要去做个另类的生成工具。 JSFL使用起来很简单,而且调试很方便。IDE里面的历史面板可以把你每一步操作使用的JSFL源码都告诉你。第一次使用你可能需要了解他的这个DOM结构,语法是js语法,即使你没有任何js基础,但是有AS基础就够用了。 1、当前打开的文档用fl.getDocument()取得,他是一个Document对象。 2、fl.getDocument().library 取得当前文档库的引用,做素材的话这个是最常用到的了。库面板上可以进行的操作,你都可以用API来做,看一下帮助文档就了解了,并不复杂。 3、fl.getDocumentDOM().getTimeline() 来访问当前文档的时间轴。此方法返回当前正在编辑的场景或元件的时间轴。也就是你当前正在操作哪个时间轴,显示的就是哪个时间轴。 4、时间轴上又分了层layer,每一个层又有不同的帧frame。程序可以取得任何的时间轴上面的层和帧的内容。 5、有的时候操作某个东西需要把他变成选择状态。场景中正在编辑的东西的选取可以通过坐标来操作,相当于你在某个坐标点了一下,那么这一点下最上层的物体就被选中了。 6、JSFL一般存储在C:\Documents and Settings\Samsung\Local Settings\Application Data\Adobe\Flash CS3\zh_cn\Configuration 里面(这个会不一样,到你的用户名下找一下,这里我的用户名是Samsung),一般你放到这个目录下的command目录里面,那么就可以在你的Flash CS3 IDE的菜单-》命令中找到。 如果想多了解多一点他的用法,可以参考衰人的帖子。 http://bbs.actionscript3.cn/viewthread.PHP?tid=19760&highlight=jsfl 说了一堆,简单看一个例子就明白了。 开始制作之前我们先大致确定一下我们的需求: 1、我们需要把每一位图都变成一个MC,同时把这个MC作为一个导出类来用 2、每一个位图都有一个唯一的导出类名。 3、所有的位图变成MC之后都是左上角作为原点。 4、处理完的位图和MC都在库里面分目录存放,资源的种类作为目录。 5、位图的文件名中记录了种类、名称和导出类名。(本例中的位图命名规则为:种类_名称_导出类名.png) 最后使用的JSFL代码如下。 fl.getDocumentDOM().selectAll();//选中场景中所有的位图 if(fl.getDocumentDOM().selection.length>0) { fl.getDocumentDOM().deleteSelection();//删除所有位图 } var lib=fl.getDocumentDOM().library;//取得库 var libLength=lib.items.length;//库元素的长度 var bitmapArr=new Array();//库里面没有处理的位图 for(var i=0;i<libLength;i++) { //没有在目录中的位图则表示没有处理 if((lib.items[i].itemType=="bitmap")&&((lib.items[i].name).indexOf("/")==-1)) { bitmapArr.push(lib.items[i].name); } } if(bitmapArr.length>0) { //创建目录 for(var i=0;i<bitmapArr.length;i++) { var name=bitmapArr[i];//位图的完整名称 var nameArr=bitmapArr[i].split("_");//位图名称的拆分数组 var folder=nameArr[0];//目录名称 var iconName=nameArr[1];//图标名称 var code=nameArr[2].split(".")[0];//图标编码 lib.newFolder(folder); lib.selectItem(name);//选中位图 lib.addItemToDocument({x:0, y:0});//添加到场景 fl.getDocumentDOM().selectAll(); var mcName=iconName+"_"+code; //转换为mc fl.getDocumentDOM().convertToSymbol("movie clip",mcName,"top left") ; if (lib.getItemProperty(''linkageImportForRS'') == true) { lib.setItemProperty(''linkageImportForRS'', false); } lib.setItemProperty(''linkageExportForAS'', true); lib.setItemProperty(''linkageExportForRS'', false); lib.setItemProperty(''linkageExportInFirstFrame'', true); lib.setItemProperty(''linkageClassName'', code); lib.setItemProperty(''scalingGrid'', false); fl.getDocumentDOM().selectAll();//选中场景中所有的位图 fl.getDocumentDOM().deleteSelection();//删除所有位图 var bitmapFolder=folder+"/图素"; var mcFolder=folder+"/导出类" lib.newFolder(bitmapFolder); lib.newFolder(mcFolder); lib.moveToFolder(mcFolder, mcName); lib.moveToFolder(bitmapFolder, name); } } else { alert("没有需要处理的位图!"); } 完整例子在这里下载: jsfl.rar 关键词: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于利用JSFL制作swf素材包的所有评论