我正在使用jquery音频录制插件jrecorder,我希望能够通过按下按钮来更改音频文件名。该脚本使用'host'变量定义文件名。我希望能够通过单击button1或单击button2将“变量”更改为“track01”。我该怎么做呢?
<script>
$.jRecorder(
{
host : 'acceptfile.php?filename=track00' ,
callback_started_recording: function(){callback_started(); },
callback_stopped_recording: function(){callback_stopped(); },
callback_activityLevel: function(level){callback_activityLevel(level); },
callback_activityTime: function(time){callback_activityTime(time); },
callback_finished_sending: function(time){ callback_finished_sending() },
swf_path : 'jRecorder.swf',
});
////Make buttons change save-file name
$("#button01").click(function(){
//CHANGE 'host' to 'acceptfile.php?filename=track01'
;});
$("#button02").click(function(){
//CHANGE 'host' to 'acceptfile.php?filename=track02'
;});
</script>
答案 0 :(得分:1)
我设法通过在Main.as脚本文件和jRecorder.js文件中进行更改来设计解决方案。以下是实现此目的所需的六个步骤。
步骤-1 转到https://github.com/sythoos/jRecorder并下载flash-fla文件夹中的所有内容。确保您在本地计算机上完全匹配flash-fla文件夹结构的文件夹。
第2步 完成后,如果您还没有,那么您将需要下载Flash。我使用免费的30天试用版,你也可以这样做。
第3步。打开Main.as
文件并进行以下两项更改:
更改:1
定义一个新的字符串变量以包含文件名
更改:2
在“jSendFileToServer”方法
第4步: 完成上述更改后,您需要在Flash中打开AudioRecorderCS4-1.0.fla文件并导出电影(文件 - &gt;导出 - &gt;导出电影)。
步骤5.打开jRecorder.js文件并进行以下更改:
将参数添加到sendData方法
步骤6.打开HTML并在调用sendData的JS方法中进行更改
在sendData方法
中添加参数以下是代码段,请注意我在更改之前和之后粘贴了几行代码,方法是在我添加/修改的代码中添加注释。
Main.as文件
private var recorder:MicRecorder = new MicRecorder(waveEncoder);
private var recBar:RecBar = new RecBar();
private var maxTime:Number = 30;
//Start of addition by FaisalKhan
private var FileName:String = 'Hello.wav';
//End of addition by FaisalKhan
//Start of change 1 of 2 by Faisal
//public function jSendFileToServer():void
public function jSendFileToServer(file_name):void
//End of change 1 of 2 by Faisal
{
//Start of change 2 of 2 by FaisalKhan
FileName=file_name;
//End of change 2 of 2 by FaisalKhan
finalize_recording();
}
//functioon send data to server
private function finalize_recording():void
{
var _var1:String= '';
var globalParam = LoaderInfo(this.root.loaderInfo).parameters;
for (var element:String in globalParam) {
if (element == 'host'){
//Start of change by FaisalKhan
//_var1 = globalParam[element];
_var1 = globalParam[element]+FileName;
//End of change by FaisalKhan
}
}
ExternalInterface.call("$.jRecorder.callback_finished_recording");
if(_var1 != '')
{
var req:URLRequest = new URLRequest(_var1);
req.contentType = 'application/octet-stream';
req.method = URLRequestMethod.POST;
req.data = recorder.output;
var loader:URLLoader = new URLLoader(req);
ExternalInterface.call("$.jRecorder.callback_finished_sending");
}
}
jRecorder.js文件更改:
//function call to send wav data to server url from the init configuration
//Start of change by FaisalKhan
//$.jRecorder.sendData = function(){
$.jRecorder.sendData = function(file_name){
//getFlashMovie(jRecorderSettings['recorder_name']).jSendFileToServer();
getFlashMovie(jRecorderSettings['recorder_name']).jSendFileToServer(file_name);
//End of change by FaisalKhan
}
HTML按钮点击方法更改:
$('#SendRecordingDiv').click(function(){
//Start of change by FaisalKhan
//$.jRecorder.sendData($();
$.jRecorder.sendData($("#FileControl").val()+'.wav');
//End of change by FaisalKhan
});
答案 1 :(得分:0)
下面是如何,虽然我认为你仍然会遇到问题,因为你的$ .jRecorder代码在页面加载时就会运行,所以当用户点击按钮时为时已晚。也许还可以考虑将它放在一个函数中,并在按下按钮后调用该函数。
<script>
function WhoSaysDearMe(saveFileName) {
$.jRecorder({
host : saveFileName ,
callback_started_recording: function(){callback_started(); },
callback_stopped_recording: function(){callback_stopped(); },
callback_activityLevel: function(level){callback_activityLevel(level); },
callback_activityTime: function(time){callback_activityTime(time); },
callback_finished_sending: function(time){ callback_finished_sending() },
swf_path : 'jRecorder.swf',
});
}
////Make buttons change save-file name
$("#button01").click(function(){
//CHANGE 'host' to 'acceptfile.php?filename=track01'
WhoSaysDearMe('acceptfile.php?filename=track01');
;});
$("#button02").click(function(){
//CHANGE 'host' to 'acceptfile.php?filename=track02'
WhoSaysDearMe('acceptfile.php?filename=track02');
;});
</script>