/** * @author Luis Adrián Rosas Wiedfeldt * @email supremo.tata@gmail.com * @web http://www.nomeva.com/ * @licence Free, libre, puedes hacer lo que quieras siempre y cuando menciones la fuente original. You can do it everything what you want. */ //Delcaración de variables var oDoc; var oLib; var SEPARATOR = ";"; var PREFFIX_VAR_NAME = "_root.varCommandTextLocalizable_"; var nCounter; var sXML; //Llamada a los métodos de configuración e inicialización del comando this.config(); this.init(); /** * @method config * @description Método encargado de configurar el comando * @return Void */ function config() { //Indicamos que no queremos ver el mensaje sobre un script de ejecución demasiado larga fl.showIdleMessage(false); //Limpiamos la ventana de salida fl.outputPanel.clear(); if(fl.getDocumentDOM()) { //Obtenemos la referencia al documento y a la biblioteca this.oDoc = fl.getDocumentDOM(); this.oLib = this.oDoc.library; } else { //En caso que no haya un documento abierto mostrarmo un mensaje de alerta. alert("Debes tener un documento abierto."); } } /** * @method init * @description Método encargado de inicializar el comando * @return Void */ function init() { //Delcaración de variables var aItems = this.oLib.items; var nTotalItems = aItems.length; var oItem; this.nCounter = 1; //Inicializamos el valor del XML abriendo la etiqueta principal this.sXML = "\n"; //Llamamos al método analizeTimeline para que analice le línea de tiempo principal this.analizeTimeline(); for (var i = 0; i < nTotalItems; i++) { oItem = aItems[i]; if ((oItem.itemType == "movie clip") || ( oItem.itemType == "graphic") || (oItem.itemType == "button") ) { this.oLib.editItem(oItem.name); this.analizeTimeline(); } } //Finalizamos el valor del XML cerrando la etiqueta principal this.sXML += ""; //Llamada al método createXmlFile this.createXmlFile(); //Limpiamos la memoria de Flash eliminando las variable que hemos creado delete aItems, nTotalItems, oItem; } /** * @method analizeTimeline * @description Método encargado analizar una línea de tiempo para buscar campos de texto * si encuentra campos de texto, los convierte en dinámicos y les añade * una variable. * Toda la información que va encontrando la almacena en la variable sXML * @return Void */ function analizeTimeline() { //Delcaración de variables var oTimeline = this.oDoc.getTimeline(); var aLayers = oTimeline.layers; var nTotalLayers = aLayers.length; var oLayer; //Recorremos las capas for (var j = 0; j < nTotalLayers; j++) { oLayer = aLayers[j]; oLayer.locked = false; oLayer.visible = true; if ((oLayer.layerType != "guide") || (oLayer.layerType != "folder")) { //Delcaración de variables var aFrames = oLayer.frames; var nTotalFrames = aFrames.length; var oFrame; var aElements; //Recorremos los fotogramas de la capa for (var k = 0; k < nTotalFrames; k++) { oFrame = aFrames[k]; if (oFrame.elements.length > 0) { aElements = oFrame.elements; //Delcaración de variables var nTotalElements = aElements.length; var oElement; //Recorremos los elementos del fotograma for (var l = 0; l < nTotalElements; l++) { oElement = aElements[l]; if (oElement.elementType == "text" && oElement.textType != "input") { //Delcaración de variables var sDataItem = "Nombre de la timeline: " + oTimeline.name; var sDataLayer = "Nombre de la capa: " + oLayer.name; var sDataFrame = "Número de fotograma: " + (k + 1); var sDataElement = "Nombre del elemento: " + oElement.name; var sElementText = "Texto del elemento: " + oElement.getTextString(); var sElementFormat = "Formato del elemento: " + ""; //fl.trace(sDataItem + this.SEPARATOR + sDataLayer + this.SEPARATOR + sDataFrame + this.SEPARATOR + sDataElement + this.SEPARATOR + sElementText); oElement.textType = "dynamic"; oElement.variableName = this.PREFFIX_VAR_NAME + this.nCounter; this.sXML += " \n"; this.sXML += " \n"; this.sXML += " \n"; this.nCounter++; } } //Limpiamos la memoria de Flash eliminando las variable que hemos creado delete nTotalElements, oElement; } //Incrementamos el valor de k con la duración del fotograma, esto es para que en el siguiente //ciclo del bucle vayamos director al siguiente fotograma clave k += oFrame.duration - 1; } //Limpiamos la memoria de Flash eliminando las variable que hemos creado delete aFrames, nTotalFrames, oFrame, aElements; } this.oDoc.exitEditMode(); } //Limpiamos la memoria de Flash eliminando las variable que hemos creado delete oTimeline, aLayers, nTotalLayers, oLayer; } /** * @method createXmlFile * @description Método encargado de crear el fichero XML con la relación entre textos y variables * @return Void */ function createXmlFile() { //Declaración de variables var sPath = this.oDoc.pathURI.split(this.oDoc.name).shift(); var sFileURI = sPath + "textos_extraidos_automaticamente.xml"; //Comprobación, si existe el fichero lo eliminamos if (FLfile.exists(sFileURI)) FLfile.remove(sFileURI); //Creamos el fichero XML FLfile.write(sFileURI, this.sXML); //Limpiamos la memoria de Flash eliminando las variable que hemos creado delete sPath, sFileURI; }