![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Не придумал ничего лучше такого названия... Всё равно в пару слов не опишу.
Есть приложение, работающее в FP10. Приложение представляет из себя что-то типа графического редактора. Есть возможность сохранить результирующую картинку на локальный диск пользователя. Очень хочется сделать так, чтобы при нажатии на кнопку Save сперва выдавалось PopUp-окно с сообщением "Please, wait...", а потом, когда окно уже отрисовалось в приложении, начиналось JPEG-кодирование и сохранение картинки. Если сделать такой вот простой код: var waitPopUp:IFlexDisplayObject = PopUpManager.createPopUp(this, WaitPopUp, true, PopUpManagerChildList.POPUP); var bitmapData:BitmapData = (image.content as Bitmap).bitmapData; var jpgEncoder:JPGEncoder = new JPGEncoder(100); var byteArray:ByteArray = jpgEncoder.encode(bitmapData); var file:FileReference = new FileReference(); file.save(byteArray, "result.jpg"); - нажатие на кнопку, - ужасные тормоза, - появление диалога Save File с проявившимся наконец-то PopUp-окном под ним. В голову приходят варианты слушать события какие-то, либо ждать какое-то время, а потом кодировать файл, но это всё не проходит, потому что метод FileReference.save может быть выполнен только в обработчиках событий, связанных с действиями пользователя. То есть, такой код: var timer:Timer = new Timer(Number(this.getStyle("modalTransparencyDuration")), 1); timer.addEventListener(TimerEvent.TIMER, function(event:TimerEvent):void { event.target.removeEventListener(event.type, arguments.callee); var bitmapData:BitmapData = (image.content as Bitmap).bitmapData; var jpgEncoder:JPGEncoder = new JPGEncoder(100); var byteArray:ByteArray = jpgEncoder.encode(bitmapData); var file:FileReference = new FileReference(); file.save(byteArray, "result.jpg"); } ); var waitPopUp:IFlexDisplayObject = PopUpManager.createPopUp(this, WaitPopUp, true, PopUpManagerChildList.POPUP); timer.start(); - нажатие на кнопку, - вывод PopUp-окна, - ужасные тормоза, - вместо диалога File Save я тут, как и положено, получаю ошибку нарушения безопасности. Может кто-то сталкивался с подобными задачами? Можно ли это сделать как-то красиво? Или нужно будет разделять кодирование с сообщением "Wait..." и сохранение на два шага, чтобы сохранение вызывалось при щелчке на какую-то другую кнопку? В виду того, что кодирование сильно загружает процессор, очень хотелось бы выводить пользователю сообщение о том, что Конец Света ещё не наступил. Либо, возможно, кто-то знаком с хорошим JPEG-кодировщиком, который не "вешает" приложение?
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого Последний раз редактировалось Хемуль; 21.07.2010 в 16:59. |
![]() |
Часовой пояс GMT +4, время: 11:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|