2013-10-16 81 views
0

這裏我有AS3來將錄製的聲音文件上傳到服務器。當我在Flash中測試它時,它可以正常工作(錄製聲音並將其上傳到下一幀),但在瀏覽器中它不起作用。它似乎無法調用myUpload,但我不知道爲什麼?它應該是鼠標事件嗎?謝謝。AS3:呼叫功能在瀏覽器中不起作用

function VOCWordToYourMp3() 
{ 
    setTimeout(startRecording,3000); 
    recorder.addEventListener(RecordingEvent.RECORDING, onRecording); 
    recorder.addEventListener(Event.COMPLETE, onRecordComplete); 
} 

function startRecording() 
{ 
    if (! recording) 
    { 
     recorder.record(); 
    } 
    else if (recording) 
    { 
     recorder.stop(); 
     recording = false; 
    } 
} 
function onRecording(e:RecordingEvent) 
{ 
    // 
} 

function onRecordComplete(e:Event):void 
{ 
    // 
} 
function renderWav(src, convertToMp3 = false) 
{ 
      // 
    function handleRenderTimer(e:TimerEvent) 
    { 
     // 
    } 
    function finishRender() 
    { 
      // 
    } 
} 
function makeIntoMp3(wav) 
{ 
    wav.position = 0; 
    mp3Encoder = new ShineMP3Encoder(wav); 
    mp3Encoder.addEventListener(Event.COMPLETE, mp3EncodeComplete); 
    mp3Encoder.addEventListener(ProgressEvent.PROGRESS, mp3EncodeProgress); 
    mp3Encoder.start(); 

    function mp3EncodeProgress(e:ProgressEvent):void 
    { 
     // 
    } 

    function mp3EncodeComplete(e: Event):void 
    { 
     myUpload('sound1',mp3Encoder.mp3Data); 
    } 
} 

function myUpload(namefile:String,sba: ByteArray):void 
{ 
//upload code 
} 

更新:

在Flash Player 10和ActionScript 3.0中,所有的URLLoader的調用都必須在同一個調用堆棧。 http://helpx.adobe.com/flash-player/kb/user-interaction-required-upload-download.html 相同的callstack是什麼意思?

+0

是什麼讓你相信該功能沒有運行?你是否在帶有斷點的調試模式下運行它?或者你只是猜測發生了什麼? –

+0

'SecurityError:錯誤#2176:某些操作(例如那些顯示彈出窗口的操作)只能在用戶交互時調用,例如通過鼠標單擊或按鈕按下。「 – Amir

+0

@amy。但是我不使用'Filereference.browse,FileReference.download'或'FileReference.save'。爲什麼需要用戶交互? – Amir

回答

0

我推薦使用類似Vizzy的東西:https://code.google.com/p/flash-tracer/來在瀏覽器中調試你的swf。您可以將跟蹤語句放入onRecordComplete()myUpload()函數等中,以查看代碼獲得的距離,以及是否收到任何新錯誤。因爲您正在瀏覽器中運行,您可能會遇到某種安全沙箱錯誤。能夠看出那個錯誤將幫助你找出接下來要做的事。

要使用Vizzy,您需要在您的瀏覽器中運行調試播放器,併爲您的日誌文件配置正確的路徑。這有時是有點棘手,所以我給你一些提示:

添加一個文件名爲mm.cfg你的主目錄,並填充它與這些設置:

ErrorReportingEnable=1 
AS3Verbose=0 
TraceOutputFileEnable=1 
AS3Trace=0 
TraceOutputBuffered=0 
AS3StaticProfile=0 

然後在Vizzy你有設置日誌的路徑。在我的Windows 7機器上它是這裏:

C:\Users\MyUserName\AppData\Roaming\Macromedia\Flash Player\Logs\flashlog.txt 

它可能會根據您的操作系統而有所不同。

祝你好運,如果你Vizzy給你任何新的信息,報告回來。