/* JSFL getFrameActionScript.jsfl Command "Get Frame ActionScript" Version 1.0.2 author Eiji Saito update 2008-10-11 Special Thanks : Tanabee Tanablog: "ライブラリの中でASが書いてあるやつを調べる" を改良した http://bitmap.dyndns.org/blog/archives/001602.html */ var ACTION_NAME = "Get Frame ActionScript Command"; var MAIN_DIALOG_PATH = "Commands/GetFrameActionScript/gfaMainDialog.xml"; var FILE_DIALOG_PATH = "Commands/GetFrameActionScript/gfaFileDialog.xml"; var doc = fl.getDocumentDOM(); var docName = ""; var isCurrentMode = false; var isCodeOutput = true; var isOutputFile = false; var monthArray = ["Jan.","Feb.","Mar.","Apr.","May","June","July","Aug.","Sept.","Oct.","Nov.","Dec."]; // Run command getFrameActionScript(); /** * get Frame ActionScript Command. */ function getFrameActionScript() { if (doc == null) { return; } docName = doc.name; //-------------------------------------- // xmlPanel dialog //-------------------------------------- var mainDialog = doc.xmlPanel(fl.configURI + MAIN_DIALOG_PATH); if (mainDialog.dismiss == "accept") { // mode value if (mainDialog.mode == "Current timeline") { isCurrentMode = true; } // AS output if (mainDialog.outputMode == "false") { isCodeOutput = false; } // save result if (mainDialog.saveMode == "true") { isOutputFile = true; } } else { return; } //-------------------------------------- // FOR OUTPUT PANEL //-------------------------------------- startFlOutput(ACTION_NAME); //-------------------------------------- if (isCurrentMode) { // Current timeline Mode //-------------------------------------- // traverse current timeline //-------------------------------------- var currentTimeline = doc.getTimeline(); traverse(currentTimeline.layers, "Current timeline(" + currentTimeline.name + ")"); } else { // All items Mode //-------------------------------------- // traverse main timeline(scene) //-------------------------------------- var docTimeLinesArrays = doc.timelines; var timelineLength = docTimeLinesArrays.length; for (var i=0; i < timelineLength; i++) { sceneTimeline = docTimeLinesArrays[i]; traverse(sceneTimeline.layers, docName + " : " + sceneTimeline.name); } //-------------------------------------- // traverse library items //-------------------------------------- var items = doc.library.items; for (i = 0, length = items.length; i < length; i++) { var item = items[i]; var type = item.itemType; if ((type == "movie clip") || (type == "graphic") || (type == "button")) { var itemTimeline = item.timeline; traverse(itemTimeline.layers, item.name); } } } fl.trace("##################################################"); //-------------------------------------- // file output //-------------------------------------- if (isOutputFile) { outPutFile(); } } /** * traverse items * @param {timeline.layers} targetlayers * @param {String} itemName for output */ function traverse(layers, itemName) { var layerLength = layers.length; for (var i = 0; i < layerLength; i++) { var layer = layers[i]; var frames = layer.frames; var frameLength = frames.length; for (var j = 0; j < frameLength; j++) { var frame = frames[j]; var actionScript = frame.actionScript; if (actionScript) { if (j == frame.startFrame) { var frameNumber = j + 1; fl.trace("##################################################"); fl.trace("\t " + (itemName || "")); fl.trace("\t " + "Layer:[ " + layer.name + " ], " + "Frame:[ " + frameNumber + " ] "); if (isCodeOutput) { fl.trace("##################################################"); fl.trace(""); fl.trace(actionScript.replace(/\n/g, "")); fl.trace(""); } fl.trace(""); fl.trace(""); } } } } } /** * output file dialog command */ function outPutFile() { var fileDialog = doc.xmlPanel(fl.configURI + FILE_DIALOG_PATH); if (fileDialog.dismiss == "accept") { var filePath = fileDialog.choosefileControl; fl.outputPanel.save(filePath, false, true); } } /** * get date & time */ function getNowTime() { var dateObj = new Date(); var year = dateObj.getFullYear(); var month = monthArray[dateObj.getMonth()]; var date = dateObj.getDate(); var hour = dateObj.getHours(); var min = dateObj.getMinutes(); var sec = dateObj.getSeconds(); var dateStr = month + " " + date + ", " + year + " " + hour + ":" + min + ":" + sec; return dateStr; } //-------------------------------------- // FUNCTION FOR FLASH OUTPUT PANEL //-------------------------------------- function startFlOutput( actionName ) { fl.outputPanel.clear(); var nowTimeStr = getNowTime(); fl.trace(actionName); fl.trace(docName); fl.trace(nowTimeStr); fl.trace(""); fl.trace(""); }