1

是否存在用于删除闪存中未使用的库项目的 JFSL 代码?

我知道您可以从 Flash 库菜单中选择“未使用的项目”,然后只需按下删除键。这很好,但我想自动化这个过程,因为我必须为几个项目重复这个过程。

提前致谢!

-拍

4

6 回答 6

2

也许为时已晚,但这对我有用:

 var dom = fl.getDocumentDOM();
 var items = dom.library.items;
 var lib= dom.library;

 //Look for Assets folder and remove

 for(var i=0;i<items.length;i++)
 {     
      if (items[i].name.indexOf("Assets") >= 0)
      {
         fl.trace(items[i].name+ " - target item found: Deleted");
         lib.deleteItem(items[i].name);
      }
 }

您还可以根据类型删除项目:

  for(var i=0;i<items.length;i++)
   {
      if (items[i].itemType=="graphic")
      {
         lib.deleteItem(items[i].name);
      } 
   }
于 2013-08-10T10:58:37.690 回答
1

我认为你是对的,删除未使用的项目不可用。过去,还有一个 select and compact 选项不再可用。

所以我能找到的最佳解决方案是创建一个新文档并将舞台上的所有内容复制粘贴到新文档中。它并不理想,不适用于所有项目,但它适用于某些项目。您可以在此处找到代码: in this AS3 code blog

希望能帮助到你。

于 2012-11-01T12:32:56.857 回答
1

为了跟进之前的建议,有时您会发现当您删除一些未使用的内容时,另一件事变得未使用。我写了一些代码循环,直到最终删除所有未使用的内容。如果您不需要递归方面,则可以删除 while 循环。

var lib = fl.getDocumentDOM().library;

while(lib.unusedItems.length > 0)
{
    fl.trace("Deleting... " + lib.unusedItems.length + " items");
    var unusedArr = lib.unusedItems;

    for(var i=0;i<unusedArr.length;i++) 
    {
        var unused = unusedArr[i];
        fl.trace("  deleting " + unused.name);
        lib.deleteItem(unused.name);
    }   
}
于 2016-11-02T15:52:55.070 回答
0

在这里提出并回答了这个问题:

使用 JSFL 检查库项目的“使用计数”

从那以后有一点更新。Flash Professional CC 发布了,最终有一个新的 JSAPI。信息位于此处:

http://help.adobe.com/en_US/flash/cs/extend/WS849c47c2a95c1007-6e6f2af913b0a89ffd8-8000.html

注意- library.unusedItems 仅在 Flash Professional CC 中可用。

于 2013-08-12T21:02:40.513 回答
0

链接是管理和维护库的教程,使用它您可以轻松删除未使用的项目。只需按照教程中提到的创建 JFSL 文件的步骤操作即可

于 2012-09-12T19:21:20.950 回答
0

这个简单的脚本将在 Flash Pro CC 中完成这项工作

var unusedArr = fl.getDocumentDOM().library.unusedItems;

for(var i=0;i<unusedArr.length;i++) {
    fl.trace('Item removed: '+unusedArr[i].name);
    fl.getDocumentDOM().library.deleteItem(unusedArr[i].name);
}

fl.trace(unusedArr.length+' Items removed');
于 2014-03-21T20:47:16.863 回答