Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.06.2013, 14:46
kuflash вне форума Посмотреть профиль Отправить личное сообщение для kuflash Найти все сообщения от kuflash
  № 1  
Ответить с цитированием
kuflash

Регистрация: Jan 2008
Сообщений: 82
Question Отмена процесса кодирования JPEG

Всем доброго дня! В своем проекте мне необходимо преобразовывать отображаемые объекты в JPEG картинки. Для преобразования в JPEG я использую следующий класс для асинхронного JPEG кодирования:
http://tech.pro/tutorial/722/flex-tu...s-jpeg-encoder

Но есть проблема, которую я не знаю как решить. Необходимо, чтобы пользователь смог отменить процесс кодирования нажатием на кнопку. Как процесс кодирования можно отменить?
Может стоит использовать какую то другую библиотеку? Но нужно чтобы процесс кодирования был асинхронным, т.к. не хочется чтобы пользовательский интерфейс блокировался.

Заранее благодарен за советы

Старый 23.06.2013, 15:10
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Кодирование же должно происходить почти мгновенно, для одной картинки?
__________________
Дети не должны знать о своих родителях

Старый 23.06.2013, 15:15
kuflash вне форума Посмотреть профиль Отправить личное сообщение для kuflash Найти все сообщения от kuflash
  № 3  
Ответить с цитированием
kuflash

Регистрация: Jan 2008
Сообщений: 82
У меня картинка очень большая. Порядка 3000x3000px
Потом эта картинка сохраняется в PDF. И вот процесс кодирования в JPEG идет порядка 30-35 секунд.

Старый 23.06.2013, 16:05
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 4  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Используйте воркеры для кодирования картинки без замораживания интерфейса:
http://help.adobe.com/ru_RU/FlashPla...em/Worker.html
__________________
Дети не должны знать о своих родителях

Старый 23.06.2013, 16:21
kuflash вне форума Посмотреть профиль Отправить личное сообщение для kuflash Найти все сообщения от kuflash
  № 5  
Ответить с цитированием
kuflash

Регистрация: Jan 2008
Сообщений: 82
Так вопрос то не в этом. Проблему заморозки интерфейса я решил с помощь того класса..
Я хочу узнать, возможно ли отменить процесс кодирования? Или с помощью этих воркеров это можно сделать? Опять же, они доступны начиная с версии 11.4. Но это буду решать потом, т.к. пока не указывалась версия плеера для данного проекта.

Старый 23.06.2013, 16:27
WisP вне форума Посмотреть профиль Отправить личное сообщение для WisP Найти все сообщения от WisP
  № 6  
Ответить с цитированием
WisP

Регистрация: Sep 2003
Сообщений: 28
Что значит "отменить"? Если кодируете из bitmapdata, то запоминайте эту bitmapdata и восстанавливайте, когда необходимо.

Старый 23.06.2013, 16:34
kuflash вне форума Посмотреть профиль Отправить личное сообщение для kuflash Найти все сообщения от kuflash
  № 7  
Ответить с цитированием
kuflash

Регистрация: Jan 2008
Сообщений: 82
Отменить это значит "убить" процесс кодирования, по аналогии, как, когда отменяем скачивание файла. Т.е. скачивание прерывается и все. Мне не надо запоминать состояние bitmapdata, мне нужно просто отменить процесс кодирования.
Не знаю, понятно ли я объясняю...

Добавлено через 1 минуту
Вот кусок кода, где я кодирую изображение:
Код AS3:
			templateRectangle = new Rectangle( 0, 0, templateWidth, templateHeight);
 
			templatePDFBitmapData = new BitmapData(templateWidth, templateHeight, true);
 
			templateGraphMatrix.translate(( templateWidth / 2 ), 0);
 
			templatePDFBitmapData.draw(target, templateGraphMatrix, null, null, templateRectangle);
 
			var encoder:JPEGAsyncEncoder = new JPEGAsyncEncoder(80);
			encoder.PixelsPerIteration = 128;
			encoder.addEventListener(JPEGAsyncCompleteEvent.JPEGASYNC_COMPLETE, encodeDone);
			encoder.addEventListener(ProgressEvent.PROGRESS, encodeProg);
			encoder.encode(templatePDFBitmapData);

Старый 23.06.2013, 16:43
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 8  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
А у JPEGAsyncEncoder`а нет метода для прерывания?

Этак FinishEncode к примеру, не поможет?

Опс, там же "private function"
__________________
hauts.ru

Старый 23.06.2013, 16:46
kuflash вне форума Посмотреть профиль Отправить личное сообщение для kuflash Найти все сообщения от kuflash
  № 9  
Ответить с цитированием
kuflash

Регистрация: Jan 2008
Сообщений: 82
Цитата:
Сообщение от Hauts Посмотреть сообщение
А у JPEGAsyncEncoder`а нет метода для прерывания?
Вот к сожалению, я его там не обнаружил. Есть какой то метод FinishEncode, но вроде не он.
Если, интересно, то вот сами классы этой библиотеки:
https://dl.dropboxusercontent.com/u/19322412/pfp.zip

Старый 23.06.2013, 17:49
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 10  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Попробуйте запустить своё кодирование через воркер, для прерывания просто убивайте его: terminate()
__________________
Дети не должны знать о своих родителях

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:26.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.