Flash AS3Error #2037: 函数调用序列不正确,或前面的调用不成功。

Error #2037: 函数调用序列不正确,或前面的调用不成功。

这个错误,在网上搜索了下,没有找到很明显的实质解决办法,于是找来以前自己学习时做的DEMO.
Error #2037:
Sound对象只允许被load一个声音流,即使close()了也不能加载另一个声音.
一旦对某个 Sound 对象调用了 load(),就不能再将另一个声音文件加载到该 Sound 对象中。 若要加载另一个声音文件,请创建新的 Sound 对象。
这是网上的描述,但像我这种不喜欢看书的人,还是找不到光明,最后发现是sound要再load时,需要重新new下它,只有两天班就可以开长假了,所以字里行间都静不下心来揣摩了。
实际是只要一句:
Error #2037:
Sound对象只允许被load一个声音流,即使close()了也不能加载另一个声音.
一旦对某个 Sound 对象调用了 load(),就不能再将另一个声音文件加载到该 Sound 对象中。 若要加载另一个声音文件,请创建新的 Sound 对象。

它的意思是归纳为一句就是:
var yoursound:Sound=new Sound();----全局定义
yoursound=new Sound();----再导入时定义

恼人的[Error #2037: 函数调用序列不正确,或前面的调用不成功。]就不会再出现了.

顺便贴下自己的

import flash.display.MovieClip;
import flash.display.Sprite;
import flash.errors.IOError;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;

var snd:Sound=new Sound();;
var sndchn:SoundChannel;
var i:int=1;
var tmp:String = "http://10.1.3.16/imgs/1-"+String(i)+".mp3";


var _btn:Sprite= new Sprite();
_btn.graphics.beginFill(0xff0000);
_btn.graphics.drawRect(0, 0, 30, 30);
_btn.graphics.endFill();
_btn.width = 100;
_btn.height = 100;
_btn.x = 10;
_btn.y = 10;
//_btn.buttonMode = true;
addChild(_btn);
_btn.addEventListener(MouseEvent.CLICK, clickhandle);



function clickhandle(e:MouseEvent):void {
playmp3(tmp);

}

function playmp3(tmp:String):void
{
var mp3url:URLRequest = new URLRequest(tmp);
snd = new Sound();          
snd.addEventListener(ProgressEvent.PROGRESS, onPrg);
snd.addEventListener(IOErrorEvent.IO_ERROR, onError);
snd.load(mp3url);
trace("mp3: "+mp3url.url);
}

function onError(e:IOErrorEvent):void
{
trace("MP3载入过程发生异常!");
}

function onPrg(e:ProgressEvent):void
{
var pct:int = Math.round(snd.bytesLoaded * 100 / snd.bytesTotal);
trace("进度:" + pct + "%");
if (pct > 5 && sndchn == null)
{

sndchn = snd.play();
sndchn.addEventListener(Event.SOUND_COMPLETE, onPlayend);
}
}


function onPlayend(e:Event):void
{
trace("播放完成");
sndchn.stop();
sndchn = null;
tmp="http://10.1.3.16/imgs/1-"+String(i++)+".mp3";
playmp3(tmp);
}

摘自:http://blog.sina.com.cn/s/blog_6c76f84501015x6y.html

你可能感兴趣的:(Flex,Flash,as3,sound,Error #2037)