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