Actionscript 3 关于actionscript 3中基本声音功能的一些帮助
我正在做一个mp3播放器,而且我对所有东西都非常熟悉,所以有很多问题。目前,我被困在轨道变化。我的变量声明如下所示:Actionscript 3 关于actionscript 3中基本声音功能的一些帮助,actionscript-3,audio,Actionscript 3,Audio,我正在做一个mp3播放器,而且我对所有东西都非常熟悉,所以有很多问题。目前,我被困在轨道变化。我的变量声明如下所示: var index:int = -1; var music:Sound = new Sound(new URLRequest("moe2008-05-24d02t02_vbr.mp3")); var sc:SoundChannel; var isPlaying:Boolean = false; function changeTrack(newTrack){
var index:int = -1;
var music:Sound = new Sound(new URLRequest("moe2008-05-24d02t02_vbr.mp3"));
var sc:SoundChannel;
var isPlaying:Boolean = false;
function changeTrack(newTrack){
sc.stop();
isPlaying = false;
music = new Sound(new URLRequest(newTrack));
sc = music.play();
isPlaying = true;
index++;
}
我的更改跟踪功能如下所示:
var index:int = -1;
var music:Sound = new Sound(new URLRequest("moe2008-05-24d02t02_vbr.mp3"));
var sc:SoundChannel;
var isPlaying:Boolean = false;
function changeTrack(newTrack){
sc.stop();
isPlaying = false;
music = new Sound(new URLRequest(newTrack));
sc = music.play();
isPlaying = true;
index++;
}
有人看到任何明显的错误吗???
谢谢
正如Flash Gordon所说:“你实际上
重新定义局部变量时
重置其
财产。”
这条线看起来有点可疑
sc = music.play();
这不应该是:
var musicPlay = music.play();
sc = musicPlay;
我认为在创建新连接之前,应该尝试关闭声音连接(Sound.close())。另外,我会使用相同的声音对象加载新文件(Sound.load()),以避免可能的GC问题(除非需要在声音之间淡入).在我看来,您缺少了将外部声音加载到新声音对象中的部分。您的示例似乎在重用相同的声音对象。应该是这样的:
var sound:Sound = new Sound();
var request:URLRequest = new URLRequest("path/to/your/sound");
sound.load(request);
sc = sound.play();
由于无法将另一个声音实例加载到现有声音实例中,因此需要使用local sound变量来创建新声音:
一旦对声音调用load()
对象,以后无法加载
将不同的声音文件转换为该声音
对象加载不同的声音
文件,创建一个新的声音对象
您可能需要使用字典来跟踪已加载的声音。因此,当调用此方法时,您将检查声音对象是否已在字典中注册,如果已注册,则播放该对象,而不是加载文件。这些内容完全相同。在这两种情况下,sc都被分配了music.play()的结果,这是一个SoundChannel引用。