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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.07.2007, 18:29
neelts вне форума Посмотреть профиль Отправить личное сообщение для neelts Посетить домашнюю страницу neelts Найти все сообщения от neelts
  № 1  
Ответить с цитированием
neelts
 
Аватар для neelts

Регистрация: Mar 2004
Адрес: Kazan
Сообщений: 466
Отправить сообщение для neelts с помощью ICQ Отправить сообщение для neelts с помощью Skype™
По умолчанию ByteArray > compress toString > decompress ??? (или обратимость сжатия через строку)

каким образом это можно реализовать обратимость сжатия? я пробовал так:

Код:
var b:ByteArray = new ByteArray();
b.writeUTF("hello world");
b.compress();
var s:String = b.toString();
b.length = 0;
b.writeUTF(s);
b.uncompress(); // ошибка


Последний раз редактировалось neelts; 29.07.2007 в 18:37.
Старый 29.07.2007, 18:53
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 2  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
Код:
var b:ByteArray = new ByteArray();
b.writeUTFBytes("hello world");
b.compress();
trace(b.length);
b.uncompress();
trace(b.length);
trace(b.readUTFBytes(b.length));

Старый 29.07.2007, 19:06
neelts вне форума Посмотреть профиль Отправить личное сообщение для neelts Посетить домашнюю страницу neelts Найти все сообщения от neelts
  № 3  
Ответить с цитированием
neelts
 
Аватар для neelts

Регистрация: Mar 2004
Адрес: Kazan
Сообщений: 466
Отправить сообщение для neelts с помощью ICQ Отправить сообщение для neelts с помощью Skype™
lowka, этото понятно, а как через строку то?
скажем мне нужно отправить сжатую строку на сервер, и её же получить и расжать.

Старый 29.07.2007, 22:17
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
А что, сервер выдает данные в бинарном виде, которые можно загрузить через URLLoader или URLStream и распаковать. А потом прочитывать UTF8.

Старый 29.07.2007, 22:41
neelts вне форума Посмотреть профиль Отправить личное сообщение для neelts Посетить домашнюю страницу neelts Найти все сообщения от neelts
  № 5  
Ответить с цитированием
neelts
 
Аватар для neelts

Регистрация: Mar 2004
Адрес: Kazan
Сообщений: 466
Отправить сообщение для neelts с помощью ICQ Отправить сообщение для neelts с помощью Skype™
да, это я видел в связке AS3 + AMFPHP

идем дальше: что если данные сжимаются на стороне сервера, скажем с помощью gzcompress ?

результаты сжатия с ByteArray.compress почему то отличаются..

пример сжатия "hello world"

flash: xÚcàÎHÍÉÉW(Ï/ÊI

php: xÚËHÍÉÉW(Ï/ÊI

! не все символы отображаются



существует ли решение этой проблемы?


Последний раз редактировалось neelts; 29.07.2007 в 22:48.
Старый 29.07.2007, 23:01
neelts вне форума Посмотреть профиль Отправить личное сообщение для neelts Посетить домашнюю страницу neelts Найти все сообщения от neelts
  № 6  
Ответить с цитированием
neelts
 
Аватар для neelts

Регистрация: Mar 2004
Адрес: Kazan
Сообщений: 466
Отправить сообщение для neelts с помощью ICQ Отправить сообщение для neelts с помощью Skype™
ыы, посравнивал тут коды символов сжатия, закономерность есть)

вообщем сжать в пхп и распаковать во флеше реально! )
поизучаю еще, если получится написать конвертер, сообщу немедленно

Старый 29.07.2007, 23:12
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Для начала надо перестать просматривать подобным образом контент.

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

Регистрация: Mar 2004
Адрес: Kazan
Сообщений: 466
Отправить сообщение для neelts с помощью ICQ Отправить сообщение для neelts с помощью Skype™
я имел ввиду hex коды.

короче схожесть с увеличением строк куда то пропадает, возможно как то не так конвертирую символы.

ведь аналог charCodeAt в php далеко не ord ?

Старый 30.07.2007, 00:49
neelts вне форума Посмотреть профиль Отправить личное сообщение для neelts Посетить домашнюю страницу neelts Найти все сообщения от neelts
  № 9  
Ответить с цитированием
neelts
 
Аватар для neelts

Регистрация: Mar 2004
Адрес: Kazan
Сообщений: 466
Отправить сообщение для neelts с помощью ICQ Отправить сообщение для neelts с помощью Skype™
отлично, со схожестью почти разобрался, оказывается надо использовать writeMultiByte c подходящей кодировкой

Старый 30.07.2007, 00:51
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Опытным путем было установлено, что сжимать в php нужно с уровнем 9 и во Flash пропустить первые три байта полученного bytearray (позже выяснилось, что это не нужно, это просто три байта UTF-8 BOM затесались).

Код:
<?php
$str = gzcompress('it is a good day to die',  9);
echo $str;
?>
Код:
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest('http://php/zlib/?test='+Math.random());
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.load(request);
var completeHandler:Function = function(event:Event):void {
	var ba:ByteArray = event.target.data;
	var ab:ByteArray = new ByteArray();
	ab.writeMultiByte('it is a good day to die','x-ansi');
	ab.compress();
	trace(ab,ab.length, ab[3].toString(16));
	trace(ba,ba.length, ba[3].toString(16));
	ba.uncompress();
	trace(ba);
}
loader.addEventListener(Event.COMPLETE, completeHandler);
Не уверен, что сие есть правильное решение, но переваривает строки довольно длинные без особых проблем.


Последний раз редактировалось etc; 30.07.2007 в 13:54.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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