
动画设计师在Adobe Animate软件制作玩动画后往往会直接从potoshop粘贴过来图片,或者给元件起名字的时候起中文名称,这样在生成js文件中会产生大量的中文名字。这些中文名字有时候放到服务器上就会产生乱码,那么在createjs中引用的时候就会报错,找不到对应的动画或者元件。如果手动去修改往往会有几十设置几百个名字。所以为了节约时间可以用代码来统一修改

2. 用一个文本编辑新建一个文件(我这里用的是sublime),然后保存为rename.jsfl(当然名字你可以随便起,最好是英文,但是文件格式必须是jsfl)
- 在编辑器编辑代码,代码如下
// 获取当前文档对象
var doc = fl.getDocumentDOM();
// 获取库中的所有项目
var libraryItems = doc.library.items;
// 定义需要替换的前缀和新的前缀
var prefixMap = {
"位图 ": "flywt_", // 原来是 "位图 ",替换成 "flywt_"
"对_": "r_" // 原来是 "对_",替换成 "r_"
};
// 遍历库中的所有项目
for (var i = 0; i < libraryItems.length; i++) {
var item = libraryItems[i];
// 检查项目是否为合适的类型,例如 MovieClip 或 Bitmap
if (item.itemType === "MovieClip" || item.itemType === "Bitmap") {
// 遍历 prefixMap 替换前缀
for (var oldPrefix in prefixMap) {
if (item.name.indexOf(oldPrefix) === 0) {
// 将名称前缀替换为新的前缀
var newName = prefixMap[oldPrefix] + item.name.substring(oldPrefix.length);
item.name = newName;
fl.trace("重命名: " + item.name); // 输出重命名日志
break; // 一旦匹配替换前缀,跳出内层循环
}
}
}
}
// 输出完成信息
fl.trace("所有匹配项已重命名完成!");
这段脚本的作用是遍历 Adobe Animate (以前称为 Flash) 中当前文档的库(Library)项目,检查并替换符合条件的项目名称的前缀。使用了 prefixMap 来映射需要替换的前缀和新的前缀,同时限定了要处理的项目类型为 MovieClip 或 Bitmap。
代码概述
-
获取当前文档对象:
var doc = fl.getDocumentDOM();fl.getDocumentDOM()用于获取当前打开的文档的 DOM 对象。通过该对象,你可以操作文档中的所有元素,包括库项目、时间轴元素等。 -
获取库中的所有项目:
var libraryItems = doc.library.items;doc.library.items返回当前文档中库的所有项目的数组。你可以通过它来访问库中的所有资源,如影片剪辑、按钮、位图等。 -
定义前缀映射 (
prefixMap):var prefixMap = { "位图 ": "flywt_", // 将 "位图 " 替换成 "flywt_" "对_": "r_" // 将 "对_" 替换成 "r_" };使用一个对象
prefixMap存储多个前缀替换规则。每个键(如"位图 ")代表需要匹配的旧前缀,值(如"flywt_")是替换为的新前缀。 -
遍历库中的项目:
for (var i = 0; i < libraryItems.length; i++) { var item = libraryItems[i];使用
for循环遍历库中的所有项目(libraryItems数组)。item代表当前处理的库项目。 -
检查项目类型:
if (item.itemType === "MovieClip" || item.itemType === "Bitmap") {如果库项目是
MovieClip或Bitmap类型,才会进行后续的重命名操作。通过item.itemType获取项目的类型,确保只处理符合条件的类型。 -
替换前缀:
for (var oldPrefix in prefixMap) { if (item.name.indexOf(oldPrefix) === 0) { var newName = prefixMap[oldPrefix] + item.name.substring(oldPrefix.length); item.name = newName; fl.trace("重命名: " + item.name); break; } }- 遍历
prefixMap中的所有旧前缀。 - 使用
item.name.indexOf(oldPrefix) === 0检查当前项目名称是否以某个前缀开始。 - 如果是,将该前缀替换为对应的新前缀。通过
item.name.substring(oldPrefix.length)去掉旧前缀部分,并拼接上新的前缀。 fl.trace()用于输出重命名日志,显示每个重命名的项目名称。break语句用于在匹配并重命名后跳出内部循环,避免重复替换。
- 遍历
-
输出完成信息:
fl.trace("所有匹配项已重命名完成!");当所有项目都处理完成后,输出
"所有匹配项已重命名完成!"提示操作完成。
可能的扩展
-
支持更多前缀映射:
如果你需要支持更多的前缀替换,可以直接在prefixMap中添加新的前缀和对应的替换值,例如:var prefixMap = { "位图 ": "flywt_", "对_": "r_", "按钮_": "btn_" }; -
处理更多项目类型:
目前脚本只处理了MovieClip和Bitmap类型。如果需要处理其他类型的库项目,可以扩展类型检查:if (item.itemType === "MovieClip" || item.itemType === "Bitmap" || item.itemType === "Button") { -
避免重命名冲突:
如果有需要避免重复命名冲突(例如两个项目的名称本来就相同),可以在重命名前检查是否已存在相同名称的项目。如果需要,做一些名称冲突处理。
运行环境
此脚本是在 Adobe Animate(Flash)中运行的 JSFL 脚本,JSFL(JavaScript Flash)是 Adobe Animate 的脚本语言,用于自动化和自定义 Flash 文档的操作。
执行
- 打开Adobe Animate
- 菜单栏找到命令=》运行命令
- 在软件的输出信息栏看到“所有匹配项已重命名完成!”成功

订阅 FreeMac
每周精选:Mac 高效技巧、免费替代付费软件、开发者工具推荐。用对你的 MacBook,省钱 + 提效。