diff --git a/Assets/FlashTools/Docs/CHANGELOG.md b/Assets/FlashTools/Docs/CHANGELOG.md index bf47cbd..650230d 100644 --- a/Assets/FlashTools/Docs/CHANGELOG.md +++ b/Assets/FlashTools/Docs/CHANGELOG.md @@ -1,3 +1,6 @@ +###### Version 1.3.10 +* Fix (conversion error: 'Error: scaleSelection: Argument number 1 is invalid.') + ###### Version 1.3.9 * Not save generated meshes in scene * Fix (At line 908 of file "FTMain.jsfl": ReferenceError: ft is not defined) diff --git a/Assets/FlashTools/FlashExport/Internal/FTMain.jsfl b/Assets/FlashTools/FlashExport/Internal/FTMain.jsfl index 25b3357..e41f804 100644 --- a/Assets/FlashTools/FlashExport/Internal/FTMain.jsfl +++ b/Assets/FlashTools/FlashExport/Internal/FTMain.jsfl @@ -82,78 +82,80 @@ ft.type_assert(doc, Document); ft.type_assert(location_name, 'string'); ft.type_assert_if_defined(optional_item, LibraryItem); - - var selection_r = doc.getSelectionRect(); - var selection_w = selection_r.right - selection_r.left; - var selection_h = selection_r.bottom - selection_r.top; - - var max_scale = cfg.max_convertible_selection / Math.max(selection_w, selection_h); - var prefer_scale = ftdoc.calculate_item_prefer_scale(doc, optional_item); - var final_scale = Math.min(prefer_scale, max_scale); - - if (final_scale < prefer_scale) { - var down_scale = Math.floor(final_scale / prefer_scale * 1000) * 0.001; - ft.trace_fmt( - "[Warning] {0}\n" + - "- Converted element was downscaled ({1}x) to maximum allowed size ({2}px)", - location_name, down_scale, cfg.max_convertible_selection); - } - if (ft.approximately(final_scale, 1.0, cfg.scale_precision)) { - (function() { - var elem_r = doc.getSelectionRect(); + var selection_r = doc.getSelectionRect(); + if ( selection_r ) { // getSelectionRect returns 0 for empty clips + var selection_w = selection_r.right - selection_r.left; + var selection_h = selection_r.bottom - selection_r.top; - var elem_x = elem_r.left; - var elem_y = elem_r.top; - var elem_w = elem_r.right - elem_r.left; - var elem_h = elem_r.bottom - elem_r.top; + var max_scale = cfg.max_convertible_selection / Math.max(selection_w, selection_h); + var prefer_scale = ftdoc.calculate_item_prefer_scale(doc, optional_item); + var final_scale = Math.min(prefer_scale, max_scale); - var elem_dx = Math.round(elem_x) - elem_x; - var elem_dy = Math.round(elem_y) - elem_y; - var elem_dw = Math.round(elem_w) - elem_w; - var elem_dh = Math.round(elem_h) - elem_h; + if (final_scale < prefer_scale) { + var down_scale = Math.floor(final_scale / prefer_scale * 1000) * 0.001; + ft.trace_fmt( + "[Warning] {0}\n" + + "- Converted element was downscaled ({1}x) to maximum allowed size ({2}px)", + location_name, down_scale, cfg.max_convertible_selection); + } + + if (ft.approximately(final_scale, 1.0, cfg.scale_precision)) { + (function() { + var elem_r = doc.getSelectionRect(); - doc.convertSelectionToBitmap(); - var elem = doc.selection[0]; + var elem_x = elem_r.left; + var elem_y = elem_r.top; + var elem_w = elem_r.right - elem_r.left; + var elem_h = elem_r.bottom - elem_r.top; - elem.x -= elem_dx; - elem.y -= elem_dy; - elem.width -= elem_dw; - elem.height -= elem_dh; - })(); - } else { - (function() { - var wrapper_item_name = ft.gen_unique_name(); - var wrapper_item = doc.convertToSymbol("graphic", wrapper_item_name , "top left"); - fttim.recursive_scale_filters(doc, wrapper_item, final_scale); + var elem_dx = Math.round(elem_x) - elem_x; + var elem_dy = Math.round(elem_y) - elem_y; + var elem_dw = Math.round(elem_w) - elem_w; + var elem_dh = Math.round(elem_h) - elem_h; - var elem = doc.selection[0]; - elem.setTransformationPoint({x: 0, y: 0}); - doc.scaleSelection(final_scale, final_scale); + doc.convertSelectionToBitmap(); + var elem = doc.selection[0]; - var elem_x = elem.x; - var elem_y = elem.y; - var elem_w = elem.width; - var elem_h = elem.height; + elem.x -= elem_dx; + elem.y -= elem_dy; + elem.width -= elem_dw; + elem.height -= elem_dh; + })(); + } else { + (function() { + var wrapper_item_name = ft.gen_unique_name(); + var wrapper_item = doc.convertToSymbol("graphic", wrapper_item_name , "top left"); + fttim.recursive_scale_filters(doc, wrapper_item, final_scale); - var elem_dx = Math.round(elem_x) - elem_x; - var elem_dy = Math.round(elem_y) - elem_y; - var elem_dw = Math.round(elem_w) - elem_w; - var elem_dh = Math.round(elem_h) - elem_h; + var elem = doc.selection[0]; + elem.setTransformationPoint({x: 0, y: 0}); + doc.scaleSelection(final_scale, final_scale); - doc.convertSelectionToBitmap(); - elem = doc.selection[0]; + var elem_x = elem.x; + var elem_y = elem.y; + var elem_w = elem.width; + var elem_h = elem.height; - elem.x -= elem_dx; - elem.y -= elem_dy; - elem.width -= elem_dw; - elem.height -= elem_dh; + var elem_dx = Math.round(elem_x) - elem_x; + var elem_dy = Math.round(elem_y) - elem_y; + var elem_dw = Math.round(elem_w) - elem_w; + var elem_dh = Math.round(elem_h) - elem_h; - elem.setTransformationPoint({x: (elem_x - elem.x), y: (elem_y - elem.y)}); - doc.scaleSelection(1.0 / final_scale, 1.0 / final_scale); - - fttim.recursive_scale_filters(doc, wrapper_item, 1.0 / final_scale); - })(); + doc.convertSelectionToBitmap(); + elem = doc.selection[0]; + + elem.x -= elem_dx; + elem.y -= elem_dy; + elem.width -= elem_dw; + elem.height -= elem_dh; + + elem.setTransformationPoint({x: (elem_x - elem.x), y: (elem_y - elem.y)}); + doc.scaleSelection(1.0 / final_scale, 1.0 / final_scale); + + fttim.recursive_scale_filters(doc, wrapper_item, 1.0 / final_scale); + })(); + } } }; diff --git a/ProjectStuff/FlashTools.org b/ProjectStuff/FlashTools.org index 046a184..b90a07b 100644 --- a/ProjectStuff/FlashTools.org +++ b/ProjectStuff/FlashTools.org @@ -63,6 +63,8 @@ https://gist.github.com/talecrafter/111ea3345911bd238f4998b4d5a04bf3 **** TODO Оптимизации по скейлу не влияют на растр **** TODO Не работает конвертация в batchmod'е **** TODO Площадь для оптимизации вычисляется некорректно при повёрнутых клипах +**** DONE conversion error: 'Error: scaleSelection: Argument number 1 is invalid.' +HsiyaoWang/magoichi-test.fla **** TODO Возможно проблемы с DX9 UNITY_UV_STARTS_AT_TOP UNITY_HALF_TEXEL_OFFSET