如何修改PNG转SWF的JSFL脚本,设置固定路径适配批处理
修改JSFL脚本为固定路径批量转换PNG到SWF(适配批处理)
以下是修改后的脚本,已移除文件夹选择弹窗,改用固定路径,适合加入批处理流程:
png2swf(); function png2swf() { // 替换为你的目标文件夹URI路径 // Windows示例: file:///C:/Your/PNG/Folder // Mac示例: file:///Volumes/YourDrive/Your/PNG/Folder var folderURI = "file:///C:/Your/PNG/Folder"; // 检查文件夹是否存在,避免报错 if (!FLfile.exists(folderURI)) { alert("指定的文件夹不存在!"); return; } var folderContents = FLfile.listFolder(folderURI); var doc = fl.createDocument(); doc.backgroundColor = '#00FF00'; var imported = 0; for(var i=0; i< folderContents.length; i++){ var pngURI = folderURI + "/" + folderContents[i]; // 严格匹配.png后缀(区分大小写,如需忽略可改成toLowerCase()) if (pngURI.substr(pngURI.length-4).toLowerCase() != ".png") continue; doc.importFile(pngURI); // 获取库中的位图项 var bmp_lib = doc.library.items[imported]; bmp_lib.compressionType = "lossless"; bmp_lib.allowSmoothing = true; var bmp_tl = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0]; // 对齐到文档左上角(原代码逻辑保留) bmp_tl.x = 0; bmp_tl.y = 0; // 设置文档尺寸匹配图片 doc.width = Math.floor(bmp_tl.width); doc.height = Math.floor(bmp_tl.height); // 导出SWF到同目录,替换后缀 var swfURI = pngURI.substr(0,pngURI.lastIndexOf(".")+1)+"swf"; doc.exportSWF(swfURI, true ); // 清除时间轴内容,准备下一张图 doc.selectAll(); doc.deleteSelection(); imported++; } doc.close(false); alert(imported + " 个SWF文件已生成。"); }
关键修改说明:
替换手动选择为固定路径:
- 删除了
fl.browseForFolderURL弹窗代码,直接赋值folderURI为目标文件夹的URI格式路径 - 注意路径格式:必须是
file:///开头的URI,Windows路径要把盘符改成file:///C:/...,Mac路径是file:///Volumes/...
- 删除了
增加文件夹存在检查:
- 添加
FLfile.exists(folderURI)判断,避免因路径错误导致脚本崩溃,同时给出明确提示
- 添加
优化后缀匹配(可选):
- 把原后缀判断改成
toLowerCase(),避免因PNG文件后缀为.PNG(大写)而被跳过
- 把原后缀判断改成
移除取消选择后的退出逻辑:
- 删除了
if (folderURI == null) { return; },因为现在路径是固定的,无需处理取消情况
- 删除了
使用注意:
- 请根据你的操作系统修改
folderURI的具体路径,确保格式正确 - 脚本会将每个PNG文件转换为同名SWF,保存在同一目录下
- 运行前请确保Adobe Animate(或Flash Professional)已正确安装并支持JSFL脚本运行
内容的提问来源于stack exchange,提问作者fomt
相关产品推荐
相关产品推荐

