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

原文:http://www.flashj.cn/


今天遇到这个错:
Error: Error #2037: 函数调用序列不正确,或前面的调用不成功。
at flash.media::Sound/_load()
at flash.media::Sound/load()
at org.mousebomb.media.musicPlayerV4::Mp3Container/loadMp3()
at org.mousebomb.media.musicPlayerV4::Mp3Container/nextMp3()
at org.mousebomb.media.musicPlayerV4::MusicPlayer/aC()
经过调查,这个错误的原因是:Sound对象只允许被load一个声音流,即使close()了也不能加载另一个声音.
一旦对某个 Sound 对象调用了 load(),就不能再将另一个声音文件加载到该 Sound 对象中。 若要加载另一个声音文件,请创建新的 Sound 对象。
***************************************************************
private var bgSound:Sound = new Sound();
private var channel:SoundChannel;
private var req:URLRequest = new URLRequest("source/flv/zuixuanmingzufeng.mp3");
		

// play bg music
		private function palyBgMusic(){
			var context:SoundLoaderContext = new SoundLoaderContext(2000, true);
			// should add this line,or give the Error #2037 
			bgSound = new Sound();
			bgSound.load(req,context);
            channel = bgSound.play();   
			trace("play bg music");
		}
		
		// close bg music
		private function stopBgMusic(){
			if (bgSound.bytesLoaded < bgSound.bytesTotal)
			{
				bgSound.close();
				trace("bg music close");
			}
			//should add the channel,or give the Error #2029 
			if(channel){
				channel.stop();
				trace("bg music close");
			}
		}

你可能感兴趣的:(Flash)