/** * Renames instance names, layers, library items with easy 3-step wizard. * @version 1.1 * @author: Mark Knol - http://blog.stroep.nl */ var doc = fl.getDocumentDOM(); var selectedInstance; if (!doc) { alert("Please open or create a flashfile."); } else { NameItRight(); } function NameItRight() { if (!doc.selection || !doc.selection[0]) { alert("You need to select one instance on stage to do the magic."); return; } else if (doc.selection.length != 1) { alert("You may have no more than one stage element selected. You need to select one instance on stage to do the magic."); return; } selectedInstance = doc.selection[0]; var base; if (!selectedInstance.libraryItem) { alert("Your selection is not a library item; First convert it to a symbol"); return; } var selectedInstanceLibraryItem = selectedInstance.libraryItem; if (!selectedInstanceLibraryItem.linkageImportForRS ) { var newInstanceLibraryName; if (confirm('1/3 : Rename library symbol name?\n\nCurrent symbol name: "' + selectedInstanceLibraryItem.name + '"')) { newInstanceLibraryName = prompt('Type new symbol name. ', selectedInstanceLibraryItem.name); if (newInstanceLibraryName) { selectedInstanceLibraryItem.name = newInstanceLibraryName; if (selectedInstanceLibraryItem.linkageExportForAS) selectedInstanceLibraryItem.linkageClassName = getClassPackageName(selectedInstanceLibraryItem) + '.' + getClassName(selectedInstanceLibraryItem); } } if (confirm('2/3 : The library symbol "' +selectedInstanceLibraryItem.name+ '" ' + (selectedInstanceLibraryItem.linkageExportForAS ? 'already has a base class, change it?\n\nCurrent base class: "' + selectedInstanceLibraryItem.linkageBaseClass + '"' : 'has no Base Class, add it?'))) { base = prompt('Choose a base class.', selectedInstanceLibraryItem.linkageExportForAS ? selectedInstanceLibraryItem.linkageBaseClass : 'flash.display.MovieClip'); if (base) { if (!selectedInstanceLibraryItem.linkageExportForAS) { selectedInstanceLibraryItem.linkageExportForAS = true; selectedInstanceLibraryItem.linkageClassName = getClassPackageName(selectedInstanceLibraryItem) + '.' + getClassName(selectedInstanceLibraryItem); } selectedInstanceLibraryItem.linkageBaseClass = base; } else { alert('No instance name set, library item not changed'); return; } } else { base = selectedInstanceLibraryItem.name; } } else { alert('1/3 : The name of a shared asset cannot be changed.'); } if (confirm('3/3 : Rename instance name across timeline?')) { var newInstanceName = prompt('Enter new instance name.', 'mc' + upperCaseFirstLetter(selectedInstanceLibraryItem.name)); if (newInstanceName) renameAcrossLayer(newInstanceName, doc); } function upperCaseFirstLetter(value) { return value.substring(0, 1).toUpperCase() + value.substr(1, selectedInstanceLibraryItem.name.length - 1); } function getClassPackageName(item) { var retval = doc.name.toLowerCase().split('.fla')[0] if (retval) retval = retval.split('..').join('.').split(' ').join('').split('-').join('_').toLowerCase(); return retval; } function getClassName(item) { var retval = item.name.substr(item.name.lastIndexOf('/') + 1); retval = retval.substr(0, 1).toUpperCase() + retval.substr(1); retval = retval.split('.').join('').split(' ').join(''); return retval; } function renameAcrossLayer(instancename, doc) { var timeline = doc.getTimeline(); var selectedFrame = timeline.getSelectedFrames(); var layer = timeline.layers[timeline.currentLayer]; layer.name = instancename; var framesList = layer.frames; var layerList = []; for (var i = 0, total = timeline.layers.length; i < total; i++) { layerList.push(timeline.layers[i].locked); } timeline.setLayerProperty("locked", true, "others"); timeline.setLayerProperty("locked", false, "selected"); for (var i = 0, total = framesList.length; i < total; i++) { var frameListItem = framesList[i]; var frameListItemElements = frameListItem.elements; if (frameListItemElements.length > 1) { alert("There is more than one item on frame " + (i + 1) + ".\nRenaming instance names only works with layers containing one instance across frames."); break; } else { if (frameListItemElements.length > 0) { var frameListItemElement = frameListItemElements[0]; var symbolname = frameListItemElement.libraryItem.name; doc.selectNone(); if (selectedInstanceLibraryItem.name == symbolname && frameListItem.startFrame == i) { timeline.setSelectedFrames(i, i + 1); doc.selectAll(); doc.selection[0].name = instancename; } } } } for (var i = 0, total = layerList.length; i < total; i++) { timeline.setSelectedLayers(i, i); timeline.setLayerProperty("locked", layerList[i], "selected"); } timeline.setSelectedFrames(selectedFrame, selectedFrame + 1); } };