小编Bra*_*all的帖子

Web Audio API:如何重新开始播放声音?

我在Chrome中编写了一个基本脚本,它使用新的Web Audio Api加载3个声音文件(通过XMLHTTPRequest),并逐个播放它们.我为每个声音提供了一个单独的按钮,允许用户启动和停止每个声音.

该脚本会立即加载所有三个声音文件,完成后,取消调暗播放按钮,这样用户只有在声音准备好后才能播放.此外,声音循环播放,因此当单击按钮时,每个按钮上的标签在"播放"和"停止"之间变化.

这一切都很有效...当您点击播放按钮时,您会听到循环声音,当您点击停止时声音会停止.但是,当您尝试第二次重新播放相同的声音时,声音将不会再次开始播放.每次单击播放/停止按钮时,都会调用相应的playSound()或stopSound()函数并传入适当的参数,但由于某种原因,我无法再次播放声音.难道我做错了什么?

这是我的代码:

<body>

<label for="playBtn1">Moog:</label>
<input id="playBtn1" type="button" value="Play" disabled />
<label for="playBtn1">Drums:</label>
<input id="playBtn2" type="button" value="Play" disabled />
<label for="playBtn1">Choir:</label>
<input id="playBtn3" type="button" value="Play" disabled />

<script>
  var playBtn1 = document.getElementById("playBtn1");
  var playBtn2 = document.getElementById("playBtn2");
  var playBtn3 = document.getElementById("playBtn3");

  var context = new webkitAudioContext();

  var soundBuffer1 = null;
  var soundBuffer2 = null;
  var soundBuffer3 = null;

  var soundBufferSourceNode1 = context.createBufferSource();
  soundBufferSourceNode1.looping = true;
  var soundBufferSourceNode2 = context.createBufferSource();
  soundBufferSourceNode2.looping = true;
  var soundBufferSourceNode3 = context.createBufferSource();
  soundBufferSourceNode3.looping …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome html5-audio

6
推荐指数
2
解决办法
6546
查看次数

使用cfhttp的addParam方法将标头添加到HTTP请求

我是Coldfusion的新手,无法理解为什么我在使用cfhttp进行的http请求中添加几个标题时遇到了很多麻烦.我正在尝试使用cfscript编写请求,并且从我读过的所有内容中我应该能够简单地执行:

httpService.addParam(type="header", name="Content-Type", value="application/json");
Run Code Online (Sandbox Code Playgroud)

要么

httpService.addParam(type="header", name="Authorization", value=local.authPasscode);
Run Code Online (Sandbox Code Playgroud)

但传出请求似乎不包含这些标头.我可以告诉它不起作用,因为:

  1. 我在回复中遇到错误
  2. 我正在做一个writeDump(GetHttpRequestData()),它显示了请求的所有细节(此输出根本不显示Authorization标头,并将Content-Type标头显示为:

多部分/格式的数据; 边界= ---- WebKitFormBoundaryZs9TyOQV02N3fQop

我似乎也很难以类似的方式添加消息正文,所以我认为我做错了addParam().我是这样尝试的:

httpService.addParam(type="body", value="hello");
Run Code Online (Sandbox Code Playgroud)

同样,我得到的响应有一堆缺失的字段错误,输出writeDump(GetHttpRequestData())显示缺少的正文.

我应该能够以addParam()这种方式使用吗?

完整代码:

    httpService = new http();
    httpService.setMethod("POST");
    httpService.setUrl(application.config.beanstream.postURL);

    local.authPasscode = "Passcode " & ToBase64(application.config.beanstream.merchantid & ":" & application.config.beanstream.APIPasscode, "utf-8");

    // Set headers.

    httpService.addParam(type="header", name="Authorization", value=local.authPasscode);
    httpService.addParam(type="header", name="Content-Type", value="application/json");

    // Construct the message body.

    local.body = {
        "test": "hello"
    };

    httpService.addParam(type="body", value=SerializeJSON(local.body));

    writeDump(GetHttpRequestData());

    local.result = httpService.send().getPrefix();
Run Code Online (Sandbox Code Playgroud)

更新:

好的,所以我把我postURL改为另一个本地页面,在那个页面上,我GetHttpRequestData()用来将方法,协议,标题和内容全部记录到文件中.这是我得到的:

POST
HTTP/1.1 …
Run Code Online (Sandbox Code Playgroud)

coldfusion cfhttp coldfusion-10 cfml

5
推荐指数
1
解决办法
3367
查看次数