Actionscript Byte Arrays - PullRequest
       53

Actionscript Byte Arrays

0 голосов
/ 25 января 2012

Я записываю много байтов в массив байтов.Есть ли способ сжать это и записать их все сразу?

myByteArray.writeByte(0x00);
myByteArray.writeByte(0x00);
myByteArray.writeByte(0x00);
myByteArray.writeByte(0x01);
myByteArray.writeByte(0x00);
myByteArray.writeByte(0x10);

Ответы [ 4 ]

2 голосов
/ 25 января 2012

Может создать Vector и перечислить ваши значения там, а затем просто записать их оттуда.

var values:Vector.<uint> = new <uint>[0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10];

for each(var i:uint in values)
{
    myByteArray.writeByte(i);
}
1 голос
/ 25 января 2012

Другой вариант, если вы делаете это много, - это создать файл с нужной вам последовательностью байтов, внедрить этот файл в ваш SWF-файл как массив байтов и затем использовать .writeBytes(). Что-то вроде:

[Embed(source="data.dat", mimeType="application/octet-stream")]
private const Fragment:Class;

А потом:

var wad:ByteArray = new Fragment() as ByteArray;
myByteArray.writeBytes(wad);
1 голос
/ 25 января 2012

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);
0 голосов
/ 26 января 2012

Не стесняйтесь голосовать за это, так как это совершенно нелепо:).

myByteArray.writeUnsignedInt(0x00 << 24 | 0x00 << 16 | 0x00 << 8 | 0x01);

Вы бы сохранили 3 вызова функций:)

...