adobe jsfl 这个项目已经不再更新了,但是我 觉得对于游戏来讲,写一些jsfl打包一下资源也是挺方便的。因为实在好用。最近很忙,基本上每天都加班到10点以上才能回到宿舍,好吧,为了生活和理想,我想还是继续坚持下去。最近接了一个任务,需要把NPC的头像都打包成每一张swf,并添加帧链接为“head”,为每一个NPC头像改成swf方式。但是数目很大,每一张图片打包位图都是一项体力活。(O(∩_∩)O哈哈~ 为了偷懒,要想个办法)。
下面简单东拿西拿拼接了一下代码。实现了这个小小的功能。基本过程:导入文件夹,为每一张位图添加链接"head",然后导出swf,重置不勾选状态,并继续进行下一个位图导出。在导出的过程当中。可以对资源的质量进行设置一下, 这样子压缩就有效果了。
item.quality = 80; //设置质量为80
如果,添加帧链接的时候不是指定的名字,那么也可以修改为
item.linkageClassName =className
item.linkageExportInFirstFrame = true;
item.linkageURL=className;
至于怎样改方便,凭自己自由组合。
好,该起床吃早餐了。
var ImageURL;
browImageFile();
/*打开图片文件夹*/
function browImageFile()
{
fl.outputPanel.clear();
ImageURL= fl.browseForFolderURL("请选择素材文件夹");
if(ImageURL)
importFolder(ImageURL);
fl.trace(ImageURL);
}
/*导入文件夹*/
function importFolder(folderURI)
{
var dom = fl.getDocumentDOM();
var lib = fl.getDocumentDOM().library;
fl.trace(folderURI);
var folderContents;
var fitem;
var libPath = folderURI.replace(ImageURL, "");
var subLibPath = libPath.substr(1); //去掉第一个“/”
//文件
folderContents = FLfile.listFolder(folderURI, "files");
for (var i in folderContents)
{
fitem = folderContents[i];
var inx = fitem.lastIndexOf(".");
if (inx > 0)
{
var ext = fitem.substr(inx+1).toLowerCase(); //扩展名
if (ext == "jpg" ||ext == "png" || ext == "gif")
{
fl.trace("导入文件:" + fitem);
dom.importFile(folderURI + "/" + fitem, true);
if (libPath != "")
{
lib.selectItem(fitem);
lib.moveToFolder(subLibPath);
}
}
}
}
alert("文件夹导入完成!");
addAllImagAsLink();
}
/*给所有图片添加as链接*/
function addAllImagAsLink()
{
var doc=fl.getDocumentDOM();
var lib=doc.library;
if(lib.items.length==0)return;
for(i=0; i<lib.items.length; i++)
{
if(lib.items[i].itemType=="bitmap")
{
var item = lib.items[i];
var className ;
item.linkageExportForAS = true;
if(item.name.lastIndexOf(".")!=-1)
{
className = item.name.substr(0, item.name.lastIndexOf("."));
fl.trace("导出swf文件:"+className+"swf");
}
item.linkageClassName ="head";
item.linkageExportInFirstFrame = true;
item.linkageURL="head";
item.linkageBaseClass = "flash.display.BitmapData";
item.quality = 80; //设置质量为80
exportSwf(ImageURL+"/"+className);
item.linkageExportForAS = false;
}
}
delectLib();
}
/*导出swf*/
function exportSwf(name)
{
fl.getDocumentDOM().setPlayerVersion(10);
fl.getDocumentDOM().exportSWF(name,true);
}
/*删除所有*/
function delectLib()
{
var lib = fl.getDocumentDOM().library;
lib.selectAll();
var selItems = lib.getSelectedItems();
if(!selItems) return ;
for(var i=0;i<selItems.length;i++ )
{
lib.deleteItem(selItems[i].name);
}
alert("删除库所有元件操作结束!");
}