/* Adjust Items - Aaron Steed Iterates through a list of library items and adds position, rotation or scaling adjustments. The script is set to ignore locked layers. put the jsfl and xml in: C:/Documents and Settings/user/Local Settings/Application Data/Adobe/Flash CS3/en/Configuration/Commands/ */ fl.outputPanel.clear(); var doc = fl.getDocumentDOM(); var lib = doc.library; var selectionList = lib.getSelectedItems().slice(); var result = doc.xmlPanel(fl.configURI + "/Commands/AdjustItems.xml"); var x = parseFloat(result.x); var y = parseFloat(result.y); var r = parseFloat(result.r); var scaleX = parseFloat(result.scaleX); var scaleY = parseFloat(result.scaleY); if (result.dismiss == "accept"){ for(var i in selectionList) { lib.editItem(selectionList[i].name); var time = doc.getTimeline(); var layers = time.layers; // we keep a list of all the items we've already worked on to save on doing them twice var selectionElements = new Array(); // if Adobe would be so kind as to let me "edit multiple frames" this next ugly // piece of code would not have to happen for(var j = 0; j < layers.length; j++){ // omitting the next line will affect locked layers - what we're doing is not a selection if(layers[j].locked) continue; for(var k = 0; k < layers[j].frames.length; k++){ var frame = layers[j].frames[k]; for(var m = 0; m < frame.elements.length; m++){ var element = frame.elements[m]; var n = 0; for(n = 0; n < selectionElements.length; n++){ if(element == selectionElements[n]) break; } if(n == selectionElements.length){ if(x != 0 || y != 0){ element.x += x; element.y += y; } if(r != 0){ element.rotation += r; } if(scaleX != 0 || scaleY != 0){ element.scaleX += scaleX; element.scaleY += scaleY; } selectionElements.push(element); } } } } } }