2013-10-16 49 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给你任何新的信息,报告回来。