diff --git a/Tools/FlashExport2.jsfl b/Tools/FlashExport2.jsfl index daaadf7..6357cd6 100644 --- a/Tools/FlashExport2.jsfl +++ b/Tools/FlashExport2.jsfl @@ -1 +1 @@ -var FlashTools = function() { }; // ------------------------------------ // Common functions // ------------------------------------ FlashTools.prototype.Trace = function(text) { fl.outputPanel.trace(text); }; FlashTools.prototype.TraceError = function(text) { this.Trace("!!!Error!!!: " + text); }; FlashTools.prototype.ClearOutput = function() { fl.outputPanel.clear(); }; FlashTools.prototype.EscapePath = function(path) { return path.replace(/ /g, '%20'); } FlashTools.prototype.CombinePath = function(lhs, rhs) { return this.EscapePath(lhs) + this.EscapePath(rhs); }; // ------------------------------------ // Folder item functions // ------------------------------------ FlashTools.prototype.FolderItem_TraceInfo = function(item) { this.Trace(" Name : " + item.name); this.Trace(" ExportFilename : " + this.BitmapItem_GetExportFilename(item)); }; FlashTools.prototype.FolderItem_GetExportFilename = function(item) { return this.EscapePath(item.name); }; // ------------------------------------ // Bitmap item functions // ------------------------------------ FlashTools.prototype.BitmapItem_TraceInfo = function(item) { this.Trace(" Name : " + item.name); this.Trace(" ExportFilename : " + this.BitmapItem_GetExportFilename(item)); }; FlashTools.prototype.BitmapItem_GetExportFilename = function(item) { var export_filename = item.name; var regex_has_png_ext = /\.png$/i; if ( !regex_has_png_ext.test(export_filename) ) { export_filename += ".png"; } return export_filename; }; // ------------------------------------ // Document functions // ------------------------------------ FlashTools.prototype.Document_TraceInfo = function(document) { this.Trace(" Name : " + document.name); this.Trace(" Path : " + this.Document_GetPath(document)); this.Trace(" ExportFolder : " + this.Document_GetExportFolder(document)); }; FlashTools.prototype.Document_GetPath = function(document) { return this.EscapePath(document.pathURI); }; FlashTools.prototype.Document_GetExportFolder = function(document) { return this.Document_GetPath(document) + "_export/"; }; FlashTools.prototype.Document_ExitEditMode = function(document) { for ( var i = 0; i < 100; ++i ) { document.exitEditMode(); } }; FlashTools.prototype.Document_ClearExportFolder = function(document) { var export_folder = this.Document_GetExportFolder(document); if ( FLfile.exists(export_folder) ) { if ( !FLfile.remove(export_folder) ) { this.TraceError("Can't remove document export folder!"); this.TraceError(" Export folder: " + export_folder); return false; } } if ( !FLfile.createFolder(export_folder) ) { this.TraceError("Can't create document export folder!"); this.TraceError(" Export folder: " + export_folder); return false; } return true; }; FlashTools.prototype.Document_ExportLibrary = function(document) { this.Document_ExitEditMode(document); var export_folder = this.Document_GetExportFolder(document); var xml_content = "\n"; for ( var i = 0; i < document.library.items.length; ++i ) { var item = document.library.items[i]; if ( item.itemType == "folder" ) { var item_filename = this.FolderItem_GetExportFilename(item); var item_export_path = this.CombinePath(export_folder, item_filename); if ( !FLfile.createFolder(item_export_path) ) { this.TraceError("Can't create library export folder!"); this.TraceError(" Export folder: " + export_folder); this.FolderItem_TraceInfo(item); return false; } } else if ( item.itemType == "bitmap" ) { var item_filename = this.BitmapItem_GetExportFilename(item); var item_export_path = this.CombinePath(export_folder, item_filename); if ( !item.exportToFile(item_export_path) ) { this.TraceError("Can't export bitmap asset!"); this.TraceError(" Export folder: " + export_folder); this.BitmapItem_TraceInfo(item); return false; } xml_content += "\t\n"; } else if ( item.itemType == "graphic" || item.itemType == "component" || item.itemType == "movie clip" ) { } else { this.TraceError("Unsupported library item type!"); this.TraceError(" Item type: " + item.itemType); return false; } } xml_content += ""; var library_path = this.CombinePath(export_folder, "Library.xml"); if ( !FLfile.write(library_path, xml_content) ) { this.TraceError("Can't create library xml!"); this.TraceError(" Library path: " + library_path); } return true; }; // ------------------------------------ // Convert functions // ------------------------------------ FlashTools.prototype.ConvertAll = function() { var documents = fl.documents; for ( var i = 0; i < documents.length; ++i ) { this.ConvertOne(documents[i]); } }; FlashTools.prototype.ConvertOne = function(document) { this.Trace("-= Convert document start =-"); this.Document_TraceInfo(document); if ( this.Document_ClearExportFolder(document) ) { if ( this.Document_ExportLibrary(document) ) { this.Trace("-= Convert document finish =-"); } else { this.Document_ClearExportFolder(document); } } }; // ------------------------------------ // Test functions // ------------------------------------ FlashTools.prototype.CommonTest = function(func, func_name) { if ( !func() ) { this.Trace("Test error: " + func_name); } }; FlashTools.prototype.Test0 = function() { return true; }; FlashTools.prototype.RunTests = function() { this.CommonTest(this.Test0, "Test0"); }; // ------------------------------------ // Run // ------------------------------------ var ft = new FlashTools(); ft.ClearOutput(); ft.RunTests(); ft.ConvertAll(); \ No newline at end of file +// ------------------------------------ // JS functions // ------------------------------------ if ( !String.prototype.format ) { String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; } // ------------------------------------ // FlashTools // ------------------------------------ var FlashTools = function() { }; // ------------------------------------ // Common functions // ------------------------------------ FlashTools.prototype.Trace = function(text) { fl.outputPanel.trace(text); }; FlashTools.prototype.TraceError = function(text) { this.Trace("!!!Error!!!: " + text); }; FlashTools.prototype.Assert = function(expr, msg) { if ( !expr ) { throw msg != undefined ? "Assert! " + msg : "Assert!"; } }; FlashTools.prototype.ClearOutput = function() { fl.outputPanel.clear(); }; FlashTools.prototype.EscapePath = function(path) { return path.replace(/ /g, '%20'); }; FlashTools.prototype.CombinePath = function(lhs, rhs) { return this.EscapePath(lhs) + this.EscapePath(rhs); }; // ------------------------------------ // Clip item functions // ------------------------------------ FlashTools.prototype.ClipItem_TraceInfo = function(item) { this.Trace("\tName : " + item.name); this.Trace("\tExportFilename : " + this.ClipItem_GetExportFilename(item)); }; FlashTools.prototype.ClipItem_GetExportFilename = function(item) { return item.name; }; // ------------------------------------ // Bitmap item functions // ------------------------------------ FlashTools.prototype.BitmapItem_TraceInfo = function(item) { this.Trace("\tName : " + item.name); this.Trace("\tExportFilename : " + this.BitmapItem_GetExportFilename(item)); }; FlashTools.prototype.BitmapItem_GetExportFilename = function(item) { var export_filename = item.name.replace(/\//g, '_'); var regex_has_png_ext = /\.png$/i; return regex_has_png_ext.test(export_filename) ? export_filename : export_filename + ".png"; }; // ------------------------------------ // Document functions // ------------------------------------ FlashTools.prototype.Document_TraceInfo = function(document) { this.Trace("\tName : " + document.name); this.Trace("\tPath : " + this.Document_GetPath(document)); this.Trace("\tExportFolder : " + this.Document_GetExportFolder(document)); }; FlashTools.prototype.Document_GetPath = function(document) { return this.EscapePath(document.pathURI); }; FlashTools.prototype.Document_GetExportFolder = function(document) { return this.Document_GetPath(document) + "_export/"; }; FlashTools.prototype.Document_GetBitmapExportFolder = function(document) { return this.Document_GetExportFolder(document) + "bitmaps/"; }; FlashTools.prototype.Document_ExitEditMode = function(document) { for ( var i = 0; i < 100; ++i ) { document.exitEditMode(); } }; FlashTools.prototype.Document_PrepareExportFolder = function(document) { var export_folder = this.Document_GetExportFolder(document); if ( FLfile.exists(export_folder) ) { if ( !FLfile.remove(export_folder) ) { throw "Can't remove document export folder ({0})!" .format(export_folder); } } if ( !FLfile.createFolder(export_folder) ) { throw "Can't create document export folder ({0})!" .format(export_folder); } var bitmap_export_folder = this.Document_GetBitmapExportFolder(document); if ( !FLfile.createFolder(bitmap_export_folder) ) { throw "Can't create bitmap export folder ({0})!" .format(bitmap_export_folder); } }; FlashTools.prototype.Document_ExportLibrary = function(document) { this.Document_ExitEditMode(document); var export_folder = this.Document_GetExportFolder(document); var bitmap_export_folder = this.Document_GetBitmapExportFolder(document); var xml_content = "\n"; for ( var i = 0; i < document.library.items.length; ++i ) { var item = document.library.items[i]; if ( item.itemType == "folder" ) { // nothing } else if ( item.itemType == "bitmap" ) { var item_filename = this.BitmapItem_GetExportFilename(item); var item_export_path = this.CombinePath(bitmap_export_folder, item_filename); if ( !item.exportToFile(item_export_path) ) { throw "Can't export bitmap asset ({0})!" .format(item_export_path); } xml_content += "\t\n" .format(item.name, item.itemType, item_filename); } else if ( item.itemType == "graphic" || item.itemType == "component" || item.itemType == "movie clip" ) { var item_filename = this.ClipItem_GetExportFilename(item); var item_export_path = this.CombinePath(export_folder, item_filename); xml_content += "\t\n" .format(item.name, item.itemType, item_filename); } else { throw "Unsupported library item type ({0})!" .format(item.itemType); } } xml_content += ""; var library_path = this.CombinePath(export_folder, "library.xml"); if ( !FLfile.write(library_path, xml_content) ) { throw "Can't create library xml ({0})!" .format(library_path); } }; // ------------------------------------ // Convert functions // ------------------------------------ FlashTools.prototype.ConvertAll = function() { var documents = fl.documents; for ( var i = 0; i < documents.length; ++i ) { this.ConvertOne(documents[i]); } }; FlashTools.prototype.ConvertOne = function(document) { this.Trace("-= Convert document start =-"); try { this.Document_TraceInfo(document); this.Document_PrepareExportFolder(document); this.Document_ExportLibrary(document); this.Trace("-= Convert document finish =-"); } catch ( e ) { this.Trace("-= Convert document error =- : " + e); } }; // ------------------------------------ // Test functions // ------------------------------------ FlashTools.prototype.CommonTest = function(func, func_name) { if ( !func() ) { this.Trace("Test error: " + func_name); } }; FlashTools.prototype.Test0 = function() { return true; }; FlashTools.prototype.RunTests = function() { this.CommonTest(this.Test0, "Test0"); }; // ------------------------------------ // Run // ------------------------------------ var ft = new FlashTools(); ft.ClearOutput(); ft.RunTests(); ft.ConvertAll(); \ No newline at end of file