- 浏览: 577732 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
wzh051527:
我是大四实习生一个,自我感觉技术能力在第三年。。唯一不明白,为 ...
十年技术,不要再迷茫 -
room_bb:
.hrl文件怎么加入到编译规则里面?比如:pp.hrl文件-d ...
Erlang中用的makefile的一点解释 -
吉米家:
感觉帆软报表的flash打印就很不错哇,特别好用
JSP 实现报表打印 -
雪碧爱芬达:
苦逼程序员的辛酸反省与总结 -
mlyjxx:
...
十年技术,不要再迷茫
想利用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=19760highlight=jsfl
说了一堆,简单看一个例子就明白了。
开始制作之前我们先大致确定一下我们的需求:
1、我们需要把每一位图都变成一个MC,同时把这个MC作为一个导出类来用
2、每一个位图都有一个唯一的导出类名。
3、所有的位图变成MC之后都是左上角作为原点。
4、处理完的位图和MC都在库里面分目录存放,资源的种类作为目录。
5、位图的文件名中记录了种类、名称和导出类名。(本例中的位图命名规则为:种类_名称_导出类名.png)
最后使用的JSFL代码如下。
为什么要学习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 { //没有在目录中的位图则表示没有处理 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 { 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("没有需要处理的位图!"); }
作为一个有些经验的FLASH开发者,想必都会形成一些自己的开发习惯,比如很多人都喜欢把主时间轴第一层命名为:“AS”,第二层命名为“Label”,类似这样的劳动都是重复的,我们有办法可以简化它们么?答案是肯定的,于是jsfl隆重登场了。
什么是jsfl?
如果说AS是用来在SWF运行时运行的脚本,而jsfl则是在Flash编辑环境下运行的脚本。在这里我不想用太多专业的术语打击新手继续学习的信心,我想先带大家做一个非常简单的实验,实验环境:操作系统(Win XP2),FLASH开发环境(FLASH 8 简体中文版)。
- 首先把你的文件后缀名显示出来:→工具→文件夹选项→查看→把“隐藏已知文件类型的扩展名”选项取消。
- 随便在那里右键新建一个空的TXT文本文件。
- 打开FLASH8,然后新建一个fla,这时候你会看到时间轴上已经自动产生一个图层“图层 1”。
- 在FLASH中打开“历史记录”面板。
- 然后将时间轴“图层 1”改名为“AS”,这时观察“历史记录”面板,你会发现多了一条“层命名”。
- 然后右键点击“层命名”,在弹出菜单中选择“复制步骤”。
- 打开你的TXT文件,然后粘贴,这时你会看到TXT文件中出现一段代码:
fl.getDocumentDOM().getTimeline().setLayerProperty('name', 'AS'); - 保存你的TXT文件,并重命名为:“把图层命名为AS.jsfl”。
- 将你的“把图层命名为AS.jsfl”放到类似下面路径的文件夹下:
C:\Documents and Settings\Administrator\Local Settings\Application Data\Macromedia\Flash 8\zh_cn\Configuration\Commands
其中,Administrator是你的系统用户名。 - 这时候点击FLASH主菜单栏中的“命令”,你会发现在“运行命令”的横线下面多了一条“把图层命名为AS.jsfl”的选项。
- 再新建一个fla,然后选择“图层 1”,并执行“命令”菜单中的“把图层命名为AS.jsfl”,你会发现,“图层1”被自动命名为“AS”了。
上面的实验告诉我们什么?
相信大家已经能简单的体会到jsfl的作用了,它可以通过一些jsfl脚本自动完成对应的FLASH编辑操作。另外我们还应该了解到如下知识才算阶段性毕业:
- jsfl是一种脚本语言。
- jsfl文件应该放在那里。
- 如何运行一个jsfl命令。
jsfl脚本只能从“历史记录”面板中生成么?
当然不是,“历史记录”面板所能生成的jsfl非常有限,要想实现复杂的功能,就必须自己手动写Flash JavaScript代码了。至于jsfl的官方专业解释,大家可以去查看FLASH 8帮助文档中的《扩展 Flash》一书,书中还有jsfl的应用示例和程序字典,我就是看着这本书自己研究的。
jsfl到底有多强大?我们有必要学jsfl么?
jsfl多强大我还不能确切的告诉你,因为我也没深入学习呢:)但用过ASV5的朋友应该都知道,ASV5能把SWF中的所有元素都分离出来,并产生一个jsfl文件,然后运行这个jsfl文件就可以把那些分离出来的元素组合为一个fla源文件了,由此可见jsfl的强大能力了吧?至于有没有必要深入学jsfl,那要看你的兴趣和工作需要,火山目前的工作可能需要批量生产一些结构复杂却类似的SWF,于是对火山来说,jsfl就比较重要了。
个满足火山日常开发习惯的综合例子:
火山开发习惯:目前我在开始一个面向过程的项目之前,以下三个工作是必不可少的。
- 时间轴最上层建立“AS”层和“Label”层
- AS” 层第一帧写如下注释:
//================系统设置================//
//——————变量初始化
//——————数组初始化
//——————对象初始化
//——————系统初始化
//——————界面初始化
//================功能逻辑================//
//================函数模块================// - 库里建立三个文件夹:“0-image”,“1-sound”,“2-公用元件”。
→好了,需求有了,我们就开始写代码吧,前面我们已经知道jsfl文件应该放的位置了,这次就直接在那里建立一个“火山习惯.jsfl”,然后写下面的代码:
//第一步:自动产生AS层和Label层
fl.getDocumentDOM().getTimeline().addNewLayer("AS");
fl.getDocumentDOM().getTimeline().addNewLayer("Label");
//第二步:在“AS”层第一帧上添加注释
var layerIndex = fl.getDocumentDOM().getTimeline().findLayerIndex("AS");
fl.getDocumentDOM().getTimeline().layers[layerIndex].frames[0].actionScript = '//================系统设置================//\n//——————变量初始化\n//——————数组初始化\n//——————对象初始化\n//——————系统初始化\n//——————界面初始化\n//================功能逻辑================//\n//================函数模块================//\n';
//第三步:在库里自动创建文件夹
fl.getDocumentDOM().library.newFolder("0-image");
fl.getDocumentDOM().library.newFolder("1-sound");
fl.getDocumentDOM().library.newFolder("2-公用元件");
新建一个fla,在“命令”菜单里运行“火山习惯”,看一下效果吧:)
发表评论
-
as3 Loader 加载资源后内存泄露无法释放的问题。
2014-06-21 10:30 638as3 Loader 加载资源后内存泄露无法释放的问题。 ... -
as3判断flash player版本的函数
2014-06-10 20:35 798//判断当前版本是否高于9.0.115.0为例子. pr ... -
CSS 中文字体的英文名称 (simhei, simsun) 宋体 微软雅黑
2014-04-03 15:25 966华文细黑:STHeiti Light [STXihei]华文 ... -
as3.0的垃圾回收机制
2013-09-07 14:02 1462还是同样的博客,还是同样的作者(Daniel Sidhio ... -
AIR程序多开
2013-09-07 13:55 967AIR应用通常不能像QQ那样能进行多开操作。为了让一个用AI ... -
starling性能优化总结
2013-07-22 14:06 1441在项目开发的过程中总结了一下starling的性能优化方案: ... -
AS3 Socket从零开始
2013-07-22 12:54 1068大家如果想学AS3 Socket直接在百度里搜一下,会找到很 ... -
绕开AS3安全沙箱 跨域加载SWF
2013-07-11 12:53 864AS3的安全沙箱的确是 ... -
解决AS3在ie中初始化时stageWidth和stageHeight为0
2013-06-14 09:23 969先看下面的一段脚本,这是比较经典的初始化脚本: pac ... -
动态获取swc中的类
2013-05-25 10:32 909想通过代码生成,来获取swc中的类,并且可以作为普通类正常使 ... -
AS3 中字符串的format功能实现
2013-05-25 10:19 804使用C#的朋友都知道,string.Format();还是挺 ... -
总结调用Flash的几种方法
2013-05-02 16:18 1623一、Adobe 提供的方法 <object wi ... -
Flash3D错误集锦
2013-05-02 14:03 895VerifyError: Error #1014: 无法找到 ... -
使用scale拉伸之后的坐标问题
2013-04-12 09:38 1236最近发现论坛多了很多 ... -
30个实用的网页设计工具
2013-03-20 09:58 780作为一位网页设计师或开发者,你一直需要搜寻获取强大的网页设计 ... -
如何成为强大的程序员?
2013-03-11 11:27 695Aaron Stannard是新创公 ... -
漫谈重构
2013-03-11 11:09 820因为工作内容的原因, ... -
AS3使用谷歌API生成二维码
2012-12-10 16:24 1311二维码在新闻杂志,网站,网络广告,电视广告等地方随处可见 ... -
OOP的聚合原则
2012-12-10 16:21 898什么是聚合? 聚合可以很好地表达对象是什么和做 ... -
压缩速率追踪
2012-11-02 14:16 1424Flash Player 11.3添加了一个压缩和解压B ...
相关推荐
jsfl脚本, 让fla 中的mc批量生成fla,并发布 减小手工修改,
例说利用JSFL批改FLASH操作题的方法 FlashJavaScript(JSFL)是一种基于JavaScript的扩展脚本语言,让我们控制Flash的创作环境。 JSFL技术能帮助我们实现FLASH自动阅卷。
/////////////////////////////////// // //1、将文件另存为:RandomNameLibaray.jsfl //2、在flash中直接运行命令 // //////////////////////////////////
flash 图片 批量 无损 png flash cs 如何能批处理 把库中的图片都改成无损Png
flash命令集,可导出Flash资源,批量发布fla文件,批量设置fla文件,设置库资源的类绑定等功能。
1、将文件另存为:RandomNameLibaray.jsfl 2、在flash中直接运行命令
FLASH操作评分常用JSFL,FLASH操作评分常用JSFL,可制作FLASH的自评分练习题,可制作FLASH的自评分练习题,可制作FLASH的自评分练习题,
如果说AS是用来在SWF运行时运行的脚本,而jsfl则是在Flash编辑环境下运行的脚本。在这里我不想用太多专业的术语打击新手继续学习的信心,我想先带大家做一个非常简单的实验,可批量改名字
jsfl中文帮助文档,Adobe官网最新版,Flash cs6(更新时间2013-6-+11)
jsfl技术文档(帮助文档) 官方中文版,内含示例
JSFL实用代码,复制可用!项目中常用!
1、打开含有连接类的Flash源文件; 2、输入想要查找的文件名(支持关键字); 3、路径输出再Flash工作台
jsfl技术文档(帮助文档)
这是一个flashCS系列使用的jsfl文件。首先打开fla文档(该fla文档必须被保存过),之后双击运行该文件会将当前正在编辑的时间轴转换成位图序列。 适合flash移动开发、 flash网游素材制作和优化、 flash stage3D材质...
可以自己在里面改元件的前缀名,以前网上下载的几个,改了前缀名出错,这个正确的分享下!
JSFL解析fla的一篇论文,展示了flash的xml结构和相关编程方法。
替换元件关键字,可批量修改.JSFL工具
利用FLash Javascript 接口,写的一个在flash CS中使用的自动描边的命令。 可以将一个静态文本自动打散-》自动描边-》自动填充颜色,提高Flash制作效率。
把PNG图片转换生成为SWF,节省资源,让加载速度更快。