事实上amfext主要提供了两个函数,一个是amf_encode,一个是amf_decode,而ByteArray中提供的IDataOutput和IDataInput提供的readObject和writeObject是AMF编码的。而amfext的编码在第一个byte指定了当前模块的类型,而ByteArray的实现并没有这个定义,因此需要将它给删除掉。所以ActionScript里需要var bytes:ByteArray = new ByteArray();
bytes.objectEncoding = ObjectEncoding.AMF3;
bytes.writeByte( 0x11 );
bytes.writeObject({ myString: "Hello World" });
来读数据,用var bytes:ByteArray = new ByteArray();
bytes.objectEncoding = ObjectEncoding.AMF3;
trace( bin2hex( evt.target.data ));
bytes.writeUTFBytes( evt.target.data );
bytes.position = 0;
bytes.readByte();
var obj:Object = bytes.readObject();