什么是jsfl呢? 在flash cs中,按ctrl+F10, 可以打开历史面板,我们在cs中的大部分操作都被记录在案。按ctrl+F8,创建一个新mc,在历史面板中就增加两条新的记录,右键->view->JavaScript in Panel, 就可以看到这些步骤其实就是一个个js语句,jsfl的本质就是控制flash cs操作的js脚本。
点击flash cs下面的commands菜单,可以看到一些执行指令,每一个指令对应的是一个jsfl文件,所在目录是 C:\Documents and Settings\{}\Local Settings\Application Data\Macromedia\Flash 8\zh_cn\Configuration\Commands, 你可以把写好的jsfl文件放在这里,重启下cs3就可以在commands下看到了,或者是打开对应的fla文件,再双击jsfl文件,cs3就会对当前的fla执行这个jsfl。
jsfl这个东西相识恨晚,早期做产品的时候,都是手工的将大量位图转成mc元件再export,完全的体力活,希望有需要的朋友能够早些得知这个东东。 下面贴上一个简单的例子:
//filename: batch_export.jsfl
//将cs3中lib下的位图,生成对应的mc元件, 并按名字导出
var lib = fl.getDocumentDOM().library; //library 对象
var libLength = lib.items.length;
var itemArr = [];
for(var i=0; i < libLength; i++) {
//将位图放入数组
if(lib.items[i].itemType=="bitmap")
itemArr.push(lib.items[i]);
}
for (var i = 0; i < itemArr.length; i++) {
var itemName = itemArr[i].name;
var expName = itemName.split(".")[0]; //不带后缀名
lib.selectItem(itemName); //选中位图
lib.addItemToDocument({x:0,y:0});
fl.getDocumentDOM().selectAll();
fl.getDocumentDOM().convertToSymbol("movie clip",expName,"top left") ; //将位图转化为mc元件
if (lib.getItemProperty('linkageImportForRS') == true) {
lib.setItemProperty('linkageImportForRS', false);
}
lib.setItemProperty('linkageExportForAS', true);
lib.setItemProperty('linkageExportForRS', false);
lib.setItemProperty('linkageExportInFirstFrame', true);
lib.setItemProperty('linkageClassName', expName);
lib.setItemProperty('scalingGrid', false);
fl.getDocumentDOM().selectAll(); //清空舞台
fl.getDocumentDOM().deleteSelection();
}