Skip to content

Instantly share code, notes, and snippets.

@gavJackson
Last active December 27, 2015 18:49
Show Gist options
  • Save gavJackson/7372313 to your computer and use it in GitHub Desktop.
Save gavJackson/7372313 to your computer and use it in GitHub Desktop.
A JSFL I wrote 5 years ago to automatically rename movieclips on the timeline (i think) - cant totally remember what it does - if you try it let me know what it does in the comments below
//loopThroughTimeLine();
function getBoolean(value)
{
var bReturn = false;
if(value.toUpperCase() == "TRUE")
{
bReturn = true;
}
return bReturn;
}
function loopThroughTimeLine(mcSuffix, doMovieClips, btnSuffix, doButtons, doCompiled, txtName, doTextFields, doLayers)
{
//alert("test");
var MOVIECLIP_SUFFIX = mcSuffix;
var BUTTON_SUFFIX = btnSuffix;
var TEXTFIELD_NAME = txtName;
var DO_MOVIECLIPS = getBoolean(doMovieClips);
var DO_BUTTONS = getBoolean(doButtons);
var DO_COMPILED_CLIPS = getBoolean(doCompiled);
var DO_TEXTFIELDS = getBoolean(doTextFields);
var DO_LAYERS = getBoolean(doLayers);
var nLabelCounter = 0;
var arrNamesAlreadyDone = new Array();
var arrNamesToCheck = new Array();
var arrNames = new Array();
var arrLayerCounter = new Array();
var arrLayers = fl.getDocumentDOM().getTimeline().layers;
var strMessage = "";
var nCounter = 0;
for(var l=0; l < arrLayers.length; l++)
{
//loop through all layers in the timeline
var arrFrames = arrLayers[l].frames;
var n = arrFrames.length;
for (i=0; i < n; i++)
{
if (i==arrFrames[i].startFrame)
{
//alert("Keyframe at: " + i);
var arrElements = arrFrames[i].elements;
for (e=0; e < arrElements.length; e++)
{
if(arrElements[e].elementType=="instance")
{
if(arrElements[e].name == "")
{
var strNewName = arrElements[e].libraryItem.name;
//remove any folder stuff
if(strNewName.indexOf("/") != -1)
{
var arrItemName = strNewName.split("/");
strNewName = arrItemName[arrItemName.length-1];
}
//alert(strNewName + "=" + arrElements[e].libraryItem.itemType);
var bProceed = true;
if(arrElements[e].libraryItem.itemType=="movie clip" && DO_MOVIECLIPS==false)
{
bProceed = false;
}
else if(arrElements[e].libraryItem.itemType=="button" && DO_BUTTONS==false)
{
bProceed = false;
}
else if(arrElements[e].libraryItem.itemType=="compiled clip" && DO_COMPILED_CLIPS==false)
{
bProceed = false;
}
if(bProceed==true)
{
//alert(strNewName + "=" + arrElements[e].libraryItem.itemType);
//make sure first character is lower case
strNewName = strNewName.substr(0, 1).toLowerCase() + strNewName.substr(1, strNewName.length);
//if there are any spaces, remove them but also capitalise the first letter of each word)
if(strNewName.indexOf(" ") != -1)
{
var arrName = strNewName.split(" ");
var strWord;
strNewName = "";
for(var w=0; w < arrName.length; w++)
{
strWord = arrName[w];
if(w > 0)
{
//capitalise the first letter
strWord = strWord.substr(0, 1).toUpperCase() + strWord.substr(1, strWord.length);
}
strNewName += strWord;
}
}
//remove illegal characters from the name
var regExp = new RegExp("\\W\\D", "gi");
strNewName = strNewName.replace(regExp, "_");
//sort out a type suffix
var strSuffix = MOVIECLIP_SUFFIX;
if(arrElements[e].libraryItem.itemType == "button")
{
strSuffix = BUTTON_SUFFIX;
}
else if(arrElements[e].libraryItem.itemType == "compiled clip")
{
strSuffix = "_" + arrElements[e].libraryItem.name.substr(0, 3).toLowerCase();
}
//add on _mc only if it's not already there
if(strNewName.substr(strNewName.length-(strSuffix.length), strNewName.length) != strSuffix)
{
strNewName += strSuffix;
}
//need to determine if have found any more instances of these items but on different layers - if so suffix with a number
strNewName = checkName(arrNames, l, strNewName, arrElements[e], arrLayerCounter, arrNamesToCheck, arrNamesAlreadyDone, strSuffix);
strMessage += "\n " + (nCounter + 1) + " " + strNewName + " (instance of '" + arrElements[e].libraryItem.name + "' on layer " + l + " @ frame " + i + ")";
//addToNamesArray(l, strNewName, arrNames, nCounter);
arrNames[nCounter] = {layer: l, name: strNewName};
arrElements[e].name = strNewName;
if(DO_LAYERS == true)
{
arrLayers[l].name = strNewName;
}
nCounter++;
}
}
else
{
strMessage += "\n ignored instance with name: " + arrElements[e].name;
arrNames.push({layer: l, name: arrElements[e].name});
if(DO_LAYERS == true)
{
arrLayers[l].name = arrElements[e].name;
}
}
}
else
{
if(arrElements[e].toString() == "[object Text]" && DO_TEXTFIELDS == true)
{
if(arrElements[e].name == "")
{
var fieldLabel = TEXTFIELD_NAME.replace("{n}", nLabelCounter);
arrElements[e].name = fieldLabel;
nLabelCounter++;
strMessage += "\n found a text field and named it to: " + arrElements[e].name;
}
if(DO_LAYERS == true)
{
arrLayers[l].name = arrElements[e].name;
}
}
}
}
}
}
}
if(strMessage != "")
{
strMessage = "Found and renamed " + arrNames.length + " instances:" + strMessage;
//alert(strMessage);
}
for(var i=0; i < arrNamesToCheck.length; i++)
{
var suffix = arrNamesToCheck[i].substr(arrNamesToCheck[i].length - MOVIECLIP_SUFFIX.length, arrNamesToCheck[i].length);
if(suffix != MOVIECLIP_SUFFIX)
{
suffix = arrNamesToCheck[i].substr(arrNamesToCheck[i].length - BUTTON_SUFFIX.length, arrNamesToCheck[i].length);
if(suffix != BUTTON_SUFFIX)
{
suffix = arrNamesToCheck[i].substr(arrNamesToCheck[i].length- COMPILED_CLIP_SUFFIX.length, arrNamesToCheck[i].length);
if(suffix != COMPILED_CLIP_SUFFIX)
{
suffix = MOVIECLIP_SUFFIX;
}
}
}
strMessage += findAndRenameMovieClips(arrNamesToCheck[i], arrNamesToCheck[i].split(suffix).join("0" + suffix));
}
//alert(strMessage);
return strMessage;
}
function addToNamesArray(nLayer, strName, arrNames, nIndex)
{
var bFound = false;
for(var i=0; i < arrNames.length; i++)
{
if(arrNames[i] != null)
{
if(arrNames[i].layer == nLayer && arrNames[i].name == strName)
{
bFound = true;
break;
}
}
}
if(bFound == false)
{
//alert("adding @ " + nIndex + " " + strName);
arrNames[nIndex] = {layer: nLayer, name: strName};
}
}
var nLastLayer;
function checkName(arrNames, nLayer, strNameToCheck, objElement, arrLayerCounter, arrNamesToCheck, arrNamesAlreadyDone, strSuffix)
{
var strLibraryItemName = objElement.libraryItem.name;
var bProceed = true;
var strReturnName = strNameToCheck;
if(arrNames != null)
{
for(var i=0; i< arrNames.length; i++)
{
//make sure not already done this name - prevents ..._1_2_mc
for(var j=0; j < arrNamesAlreadyDone.length; j++)
{
if(arrNamesAlreadyDone[j] == strReturnName)
{
bProceed = false;
}
}
if(bProceed==true)
{
if(arrNames[i].name == strNameToCheck && arrNames[i].layer != nLayer)
{
//alert("Found another instance with the name " + strNameToCheck + " on layer " + nLayer);
if(arrLayerCounter[strLibraryItemName] == null)
{
arrLayerCounter[strLibraryItemName] = 1;
}
else
{
if(nLastLayer != nLayer)
{
arrLayerCounter[strLibraryItemName]++;
}
}
var strOriginalName = strReturnName;
strReturnName = strReturnName.split(strSuffix).join(arrLayerCounter[strLibraryItemName] + strSuffix);
arrNamesToCheck.push(strNameToCheck);
arrNamesAlreadyDone.push(strReturnName);
//alert("Renaming " + strOriginalName + " to " + strReturnName + " arrLayerCounter[" + strLibraryItemName + "]=" + arrLayerCounter[strLibraryItemName]);
}
}
}
nLastLayer = nLayer;
}
//alert("checkName(arrNames, " + nLayer + ", " + strNameToCheck + ", " + objElement.name + ", arrLayerCounter, arrNamesToCheck):" + strReturnName);
return strReturnName;
}
//If named multiple instances of a clip across different layers, find the first instance and rename to ...0_mc
function findAndRenameMovieClips(strSearchForName, strRename)
{
var arrLayers = fl.getDocumentDOM().getTimeline().layers;
var strMessage = "";
for(var l=0; l < arrLayers.length; l++)
{
//loop through all layers in the timeline
var arrFrames = arrLayers[l].frames;
var n = arrFrames.length;
for (i=0; i < n; i++)
{
if (i==arrFrames[i].startFrame)
{
//alert("Keyframe at: " + i);
var arrElements = arrFrames[i].elements;
for (e=0; e < arrElements.length; e++)
{
if(arrElements[e].elementType=="instance" && arrElements[e].name == strSearchForName)
{
strMessage += "\n " + strRename + " was called " + arrElements[e].name+ " (on layer " + l + " @ frame " + i + ")";
arrElements[e].name = strRename;
arrLayers[l].name = strRename;
}
}
}
}
}
if(strMessage != "")
{
strMessage = "\nAlso re-indexed..." + strMessage;
//alert(strMessage);
}
return strMessage;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment