AS3:调用功能在浏览器中不起作用

时间:2013-10-16 20:30:41

标签: actionscript-3

这里我有AS3来将录制的声音文件上传到服务器。当我在Flash中测试它时它工作正常(录制声音并上传并转到下一帧),但在浏览器中它不起作用。似乎无法调用myUpload,但我不是为什么?它应该是鼠标事件吗?谢谢。

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的所有调用必须位于同一个callstack中。 http://helpx.adobe.com/flash-player/kb/user-interaction-required-upload-download.html 什么是同一个callstack意味着什么?

1 个答案:

答案 0 :(得分: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给你任何新信息,请回报。