闪无忧
 
首 页 业界新闻 业界杂谈 Flash教程 Flash源码 Flash图书 Flash酷站 Flex & AIR 供求信息
   本栏目通告:   无论老手还是新手,只要有自己的想法和建议,请大家积极投稿本栏目
当前位置 :首页>业界杂谈>经验技巧>列表

闪刀浪子教你利用JSFL制作swf素材包

[来源:闪刀浪子技术博客 | 作者:闪刀浪子 | 时间:2009-04-27 | 点击:  | 收藏本文  【 】]
5uflash文章摘要:作者:闪刀浪子 http://www.iflashigame.com http://hi.baidu.com/mr_ziqiang 想利用ria来生成swf,可以当看过swf文件规范之后感觉这样做似乎过于复杂了。以前衰人给过一个使用Flash CS3 IDE的扩展来制作的方式,没有怎么深入去看。周末仔细研究了一番,感觉走了弯路了

作者:闪刀浪子 http://www.iflashigame.com http://hi.baidu.com/mr_ziqiang

想利用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制作swf素材包的例子。


文章如果有错误或者缺少文件,请发邮件提交给我们
上一篇:ActionScript 3.0性能开发和评测深入分析文章
下一篇:XML處理特別字符注意事項
Tags:    
>>> 最新评论:(共有 0 位网友发表了评论)      查看所有评论
  发表评论
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
·本站发布内容均为客观表达作者观点,不代表闪无忧立场,请勿攻击和漫骂
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
  业界杂谈
  业界前沿   资源分享
  经验技巧   七嘴八舌
  热门文章
·元旦flash贺卡下载
·分享一些flash8序列号
·flash cs4序列号
·Flash 3D引擎汇集(附演示)
·如何把fla,swf文件转换为flv格式问答
·Flash组件大集合
·flv制作工具大全
·在线flv转换mpeg4
·Flash Builder 4正式版注册机
·2006年Flex大型优秀网站欣赏
关于我们 - 免责声明 - 网站地图 - 商务服务 - 联系我们 - RSS地图
©CopyRight 2006-2008, 5UFlash.COM, Inc. All Rights Reserved
鲁ICP备06034971号