Thanks for pointing me in the right direction. I never worked in jsfl before today, but I can tell it will be worthwhile for me to invest some time into this sort of scripting. Bear with me here please... Would it be something like... fl.getDocumentDOM().removeAllFilters() to remove all the filters from a currently selected item? I'm not sure how I would go about finding any elements with filters. Would you please point me towards some sample jsfl files that perform similar tasks?
Not extensively tested, but this seems to work. Copy and paste everything below into a text file with a .jsfl extension. Then just double-click to run against your currently loaded FLA, or copy into Animate's commands folder to make accessible from the Commands menu.
// Remove all filters
// globals
var _dom = fl.getDocumentDOM();
var _totalFixes = 0;
var _whiteList = "movie clip,graphic,button";
// script entry point
function main() {
scanLibrary();
scanTimeline(_dom.getTimeline());
fl.trace("Filters removed: " + _totalFixes);
}
// scan every symbol in the library
scanLibrary = function() {
var i, item;
var domItems = _dom.library.items;
for (i = 0; i < domItems.length; i++) {
item = domItems;
if (_whiteList.indexOf(item.itemType) !== -1) {
scanTimeline(item.timeline);
}
}
}
// scan every symbol in a timeline
scanTimeline = function(timeline) {
var layer, frames, element, member;
var layerSet, frameSet, elementSet, memberSet;
layerSet = timeline.layers;
for (layer in layerSet) {
frameSet = layerSet[layer].frames;
for (frame in frameSet) {
elementSet = frameSet[frame].elements;
for (element in elementSet) {
changeSomething(elementSet[element]);
memberSet = elementSet[element].members;
if (memberSet != undefined) {
for (member in memberSet) {
changeSomething(memberSet[member]);
}
}
}
}
}
}
// do something to a symbol
changeSomething = function(item) {
if (item.filters) {
_totalFixes++;
item.filters = [];
}
}
// run script
main();