如何在jquery脚本中更改此变量?

时间:2014-01-16 17:36:37

标签: javascript jquery

我正在使用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>

2 个答案:

答案 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>