У меня очень сложное Flash-приложение (например, Photoshop во Flash).
Существует много манипуляций с изображениями, и все работает хорошо, за исключением одной ошибки.
Приложение имеет функцию отмены / возврата, которая иногда выдает ошибку. Здесь слишком много кода для вставки, но проблема заключается в следующей строке кода:
trace("UNDO BMD: " + BeautyGlobal.undoArray[_undoSteps].bitmapData);
var newUndoData:BitmapData = BeautyGlobal.undoArray[_undoSteps].bitmapData.clone()
В отчете трассировки отображаются:
UNDO BMD: [object BitmapData]
ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData/clone()
at Main/undoAction()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at com.beautyCanvas.ui::Toolbar/undoClick()
Таким образом, там есть растровые данные, но они недействительны. Эта проблема не всегда возникает сама по себе. Если бы я мог определить, действительны ли данные растрового изображения, я мог бы остановить его сбой всего приложения. Я попробовал несколько вещей:
- проверка высоты данных BM (вылетает приложение с той же ошибкой)
- цикл через BMD для получения всех свойств ... ничего не появляется даже до того, как ошибка появляется.
Любые предложения будут с благодарностью.
Спасибо!