Я записываю много байтов в массив байтов.Есть ли способ сжать это и записать их все сразу?
myByteArray.writeByte(0x00); myByteArray.writeByte(0x00); myByteArray.writeByte(0x00); myByteArray.writeByte(0x01); myByteArray.writeByte(0x00); myByteArray.writeByte(0x10);
Может создать Vector и перечислить ваши значения там, а затем просто записать их оттуда.
Vector
var values:Vector.<uint> = new <uint>[0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10]; for each(var i:uint in values) { myByteArray.writeByte(i); }
Другой вариант, если вы делаете это много, - это создать файл с нужной вам последовательностью байтов, внедрить этот файл в ваш SWF-файл как массив байтов и затем использовать .writeBytes(). Что-то вроде:
.writeBytes()
[Embed(source="data.dat", mimeType="application/octet-stream")] private const Fragment:Class;
А потом:
var wad:ByteArray = new Fragment() as ByteArray; myByteArray.writeBytes(wad);
ByteArray не поддерживает нотацию [].Единственное, что приходит мне в голову, это:
[]
var myByteArray:ByteArray=new ByteArray(); var tempArr:Array=[0x00, 0x00, 0x00, 0x01, 0x00, 0x10]; for each (var elem:int in tempArr) myByteArray.writeByte(elem);
Не стесняйтесь голосовать за это, так как это совершенно нелепо:).
myByteArray.writeUnsignedInt(0x00 << 24 | 0x00 << 16 | 0x00 << 8 | 0x01);
Вы бы сохранили 3 вызова функций:)