Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   compress и uncompress в ByteArray (http://www.flasher.ru/forum/showthread.php?t=110013)

Obi 25.03.2008 18:35

compress и uncompress в ByteArray
 
Вот этот кусок замечательно работает:
Код:

byteArray = myBitmap.getPixels(rect);
byteArray.compress();
trace(byteArray);
byteArray.uncompress();
trace(byteArray);

А этот выдает ошибку 'Error #2058: There was an error decompressing the data.' :
Код:

var binaryData:ByteArray = new ByteArray();
binaryData.writeMultiByte(String(rootXmlList.data.child(i)), "UTF-8");
trace(binaryData);
binaryData.uncompress();
trace(binaryData);

Собственно разница между ними только в том, что во втором варианте я БайтМассив получаю через ХМЛ. Подскажите пожалуйста, где может быть зарыта собака?

Mr. Fixit 25.03.2008 18:39

Код:

String(rootXmlList.data.child(i))
а что в трейс выводит?

Obi 25.03.2008 18:41

БайтМассив выводит. Программа останавливается после попытки выполнения binaryData.uncompress(); До этого все трейсится замечательно.

max_oil 25.03.2008 18:48

Цитата:

Сообщение от Obi
Вот этот кусок замечательно работает:
Код:

byteArray = myBitmap.getPixels(rect);
byteArray.compress();
trace(byteArray);
byteArray.uncompress();
trace(byteArray);

А этот выдает ошибку 'Error #2058: There was an error decompressing the data.' :
Код:

var binaryData:ByteArray = new ByteArray();
binaryData.writeMultiByte(String(rootXmlList.data.child(i)), "UTF-8");
trace(binaryData);
binaryData.uncompress();
trace(binaryData);

Собственно разница между ними только в том, что во втором варианте я БайтМассив получаю через ХМЛ. Подскажите пожалуйста, где может быть зарыта собака?

ошибка может быть если к rootXmlList.data.child(i) до этого не был применен compress()

BlooDHounD 25.03.2008 18:49

а собственно почему он должен работать? в чём его смысл-то ?
если применить compress, то не распарсит XML, так как появятся нулевые байты, которых в строке быть не может.

Obi 25.03.2008 18:52

Цитата:

Сообщение от max_oil
ошибка может быть если к rootXmlList.data.child(i) до этого не был применен compress()

В ХМЛ уже сжатый вариант. Во флеше мне его нужно декомпрессить, и слепить из него БитмапДату.

max_oil 25.03.2008 18:56

Тогда должно работать.. Просто бывают разные варианты сжатия..
функция compress() (и uncompress() соответственно) принимает аргумент стиля сжатия.
Ты сам компресил или у тебя готовая база?

Obi 25.03.2008 18:59

Во флеше создается БитмапДата. Из нее составляется БайтАррай, сжимается и засовывается в mysql. Далее сервер вынимает значение из базы, и отдает флешу. Задача состоит в том, чтобы получить исходную БитмапДату.

BlooDHounD 25.03.2008 19:22

ну так пускай отдаёт в качестве бинарника. зачем извращения с XML ? скорее всего там и ошибка.

Obi 25.03.2008 19:53

Записей-то в базе много, и бинарников много, а загрузить нужно одним махом... Кроме хмл, выходов не вижу.


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

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