Я пытаюсь прочитать данные напрямую из файла SharedObject (.sol) в as3.Мне удалось извлечь информацию из заголовка:
// HEADER BYTES
var header1:int = stream.readShort();
// LENGTH
var length:int = header1 & 0x3f;
if (length == 0x3f)
length = stream.readInt();
// FILETYPE - should be "TCSO"
var sig:String = stream.readUTFBytes( 4 );
// PAD: Unused, 6 bytes long 0x00 0x04 0x00 0x00 0x00 0x00 0x00
var pad:ByteArray = new ByteArray();
stream.readBytes( pad, 0, 6 );
// NAME
// 2 byte short length
var nameLength:int = stream.readUnsignedShort();
var name:String = stream.readUTFBytes( nameLength );
var amfVersion:int = stream.readInt();
Но у меня возникают проблемы при интерпретации следующих данных:
var data:ByteArray = new ByteArray();
stream.readBytes( data );
Я полагал, что они были сохранены как AMFданные и, следовательно, функция ByteArray.readObject должна правильно их декодировать:
var sharedObjectData:Object = data.readObject();
Однако это не удается для всех моих тестовых объектов с ошибкой диапазона.
Кто-нибудь знает формат данныхв SharedObject или как его декодировать?
ПРИЧИНА: Я делаю это, потому что у нас развернуто приложение, и мы случайно изменили имя swf, который сделал SharedObject недоступным с помощью класса SharedObject.
т.е.SharedObject в app_new.swf не может прочитать #SharedObjects/app.swf/objectname.sol
Поэтому необходимо проанализировать файл sol
SharedObject, используя прямой доступ к файлу.