【问题标题】:Reading byte from floating point (Javascript)从浮点读取字节(Javascript)
【发布时间】:2012-05-07 17:02:45
【问题描述】:

我正在尝试从 AS 库中获取音频数据,从文档中该函数是这样的:

protected function audioData():String
        {
            var ret:String="";
            buffer.position = 0;                
            while (buffer.bytesAvailable > 0) 
            {
                ret += buffer.readFloat().toString() + ";";
            }
            return ret;
        }

在我的代码和这个库之间是另一个有这个代码的js:

 audioData: function(){
    return this.flashInterface().audioData().split(";");
  },

从我的代码中我可以这样访问:

  function getdata(){
    var data = Recorder.audioData();
    console.log("audioData: " + data);
  }

但是,我试图将返回的值输出到 Firebug,我得到一个很长的浮点值的逗号分隔列表,我怎样才能取回 byte[] 缓冲区?我所说的缓冲区类似于Java,因为我将通过JSNI 从Java 访问缓冲区。

这是示例日志输出(实际日志很长):

-0.00030517578125,0.00006103515625,0.00115966796875,0.00146484375,-0.00091552734375,-0.000946044921875,-0.001983642578125,-0.003997802734375,-0.005126953125,-0.00360107421875,-0.0032958984375,-0.004119873046875,-0.00433349609375,-0.0023193359375,-0.0008544921875,-0.003448486328125,-0.00347900390625 ,-0.0054931640625,-0.0067138671875,-0.005279541015625,-0.006072998046875,

我无法重新编译创建输出的 AS,现在我可以做的是在 javascript 中连接到 SWF 组件并接受它的浮点并将其转换回字节数组。我在 FDT 5 IDE 中的 AS 项目中有太多错误,我已经需要对我的应用程序进行模型化了。

我真的很想重新编译 AS 库以满足需要,但是现在我只想按原样使用它。

【问题讨论】:

标签: java javascript actionscript-3 apache-flex


【解决方案1】:

如果要查看字节数组中的实际字节数据,可以使用以下命令:

protected function audioData():String
{
   var ret:String="";
   buffer.position = 0;                
   while (buffer.bytesAvailable > 0) 
   {
      ret += buffer.readByte().toString();
   }
   return ret;
}

AFAIK as3 中的 ByteArray 类已经是一个字节数组(顾名思义:))您可以使用 [] 运算符访问它的数据,因为 byteArray[0] 会给您第一个字节。

您应该能够使用类似这样的发布请求将字节数组发送到服务器上的 url:

var request:URLRequest = new URLRequest ("http://someurl");
var loader: URLLoader = new URLLoader();
request.contentType = "application/octet-stream";
request.method = URLRequestMethod.POST;
request.data = byteArray;
loader.load(_request);

【讨论】:

  • 我看到现在我正在访问 AS 库作为嵌入在 Javascript 中的已编译 SWF,所以我的访问是通过 javascript
  • 无论如何,我会尝试使用您建议的代码编译库源
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多