我做了一些研究,根据我的阅读,似乎在JSFL中没有相应的Flash IDE中的“选择未使用的项目”。
有没有人知道一个属性,至少能够通过循环遍历整个库来检查项目是否被使用?类似于item.useCount ......
我正在检查adobe文档,但找不到任何内容......
答案 0 :(得分:2)
我不能完全赞同您在下面看到的代码,因为我正在从我现有的脚本中找到一些代码:
存在的脚本检查以查看手动选择的库项目的使用计数。它在设计中非常智能,它甚至会检查项目是否包含链接名称,但可能不一定在舞台上。这是为了确保您不删除任何可以动态实例化的项目。我所做的是将现有代码放在一个for循环中,该循环根据循环的当前项运行检查。
// Remove Unused Library Symbols
var dom = fl.getDocumentDOM();
if (dom == null)
{
alert('Please open a file.');
}
else
{
var lib = dom.library;
var activeItem;
var isFound;
var item;
var libItems = lib.items;
fl.outputPanel.clear();
for ( var i = 0; i < libItems.length; i++ )
{
var curLibItemName = libItems[i].name;
var curLibItemSelection = lib.selectItem(curLibItemName, true, true);
var selectedItem = lib.getSelectedItems();
function scanTimeline(_timeline, _mainTimeline)
{
var timeline = _timeline;
var layerCount = timeline.layerCount;
while (layerCount--)
{
var frameCount = timeline.layers[layerCount].frameCount;
while (frameCount--)
{
if (timeline.layers[layerCount].frames[frameCount] == undefined)
{
continue;
}
var elems = timeline.layers[layerCount].frames[frameCount].elements;
var p = elems.length;
while (p--)
{
// Check if it's an instance in the library
if (elems[p].elementType == 'instance')
{
// Check if it's the same clip as our active check
if (elems[p].libraryItem.name == activeItem.name)
{
found = true;
var where;
if(_mainTimeline == true)
{
where = 'Located in the main timeline.';
}
else
{
where = 'Located in the library item: ' + item.name;
}
frameCount = 0;
}
}
}
}
}
}
function scanLibrary()
{
var items = lib.items;
for (var i = 0; i < items.length; i++)
{
item = items[i];
if(item.itemType == 'movie clip')
{
scanTimeline(item.timeline, false);
}
}
}
// Safety check
if (selectedItem.length == 0)
{
alert('Please make a selection in the library.');
}
else
{
activeItem = selectedItem[0];
found = false;
// Scan the main timeline first
scanTimeline(dom.getTimeline(), true);
// Scan the library
scanLibrary();
if (found == false)
{
if (activeItem.linkageClassName != undefined)
{
fl.trace(curLibItemName + ' was not found on the stage, but it does have a linkage name so it may be instantiated dynamically. Use caution before deleting.');
}
else
{
fl.trace(curLibItemName + ' was not found on the stage and will be removed.');
lib.deleteItem(curLibItemName);
}
}
}
}
}
正如我所提到的,我不能完全相信这一点,因为脚本的原始开发人员完成了此命令的大部分繁重工作。在包含原始代码的FUEL页面中,Julian Dolce负责该工作。原始代码许可证是MIT许可证(MIT)。
您可以将上面的代码复制到新的JSFL文档中并将其保存在命令文件夹中,或从下面的链接下载jsfl文件并将其放在命令文件夹中。
Download: Remove Unused Library Symbols.jsfl
我希望有所帮助。
答案 1 :(得分:0)
选择未使用的库项目 - Flash Pro CC
var unusedArr = fl.getDocumentDOM().library.unusedItems;
for(var i=0;i<unusedArr.length;i++)
fl.getDocumentDOM().library.selectItem(unusedArr[i].name,false,true);
fl.trace(unusedArr.length+' Items selected');