Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 动作脚本3:通过websocket结束bytearray_Actionscript 3_Flash_Apache Flex_Websocket_Bytearray - Fatal编程技术网

Actionscript 3 动作脚本3:通过websocket结束bytearray

Actionscript 3 动作脚本3:通过websocket结束bytearray,actionscript-3,flash,apache-flex,websocket,bytearray,Actionscript 3,Flash,Apache Flex,Websocket,Bytearray,我将从麦克风录制的音频存储在bytearray中,并通过AS3Websocket库()将其发送到服务器: private function processMicInput(event:SampleDataEvent):void { if (isRecording) { while (event.data.bytesAvailable) { recordingBuffer.writeShort(event.data.readFloat()*0x7ff

我将从麦克风录制的音频存储在bytearray中,并通过AS3Websocket库()将其发送到服务器:

private function processMicInput(event:SampleDataEvent):void {
    if (isRecording) {
        while (event.data.bytesAvailable) {
            recordingBuffer.writeShort(event.data.readFloat()*0x7fff);
        }
        websocket.sendBytes(recordingBuffer);
        recordingBuffer.clear();
    }
}
但是,我希望数据是little endian。无论我将
recordingBuffer
bytearray设置为little-endian还是big-endian,似乎都无关紧要,它总是作为big-endian发送。 在内部,AS3Websocket库似乎使用了一个设置为big-endian的套接字。这就是问题所在吗?
如果是这样,我该如何解决这个问题呢?

很有趣。在sendBytes下的库中,您可以看到数据在输出时被复制到。我不确定修改库中发生的事情是否安全。您可以在将字节写入recordingBuffer时更改其顺序:

    while (event.data.bytesAvailable) {
        var val:int = event.data.readFloat()*0x7fff;
        recordingBuffer.writeShort( ((val >> 8) & 0xff) | ((val & 0xff) << 8));
    }
while(event.data.bytes可用){
var val:int=event.data.readFloat()*0x7fff;

recordingBuffer.writeShort(((val>>8)&0xff)|((val&0xff)你做到了!谢谢,我为此苦苦挣扎了几个小时:)现在,我不确定bytebuffers的endianness是什么意思,因为我认为它正是指您现在手动执行的操作。是的,我不确定endianness为什么不起作用。您在while循环之前设置了它吗?它应该修改.writeShort调用将字节写入bytearray的方式。看起来bytearra的endianness每次调用sendBytes时,y都会重置为big-endian。