一些帮助有关动作脚本3中的基本声音功能

时间:2009-05-28 12:59:43

标签: 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){  
    sc.stop();
    isPlaying = false;
    music = new Sound(new URLRequest(newTrack));
    sc = music.play();
    isPlaying = true;
    index++; 
}

有没有人看到任何明显的错误? 感谢

3 个答案:

答案 0 :(得分:0)

我认为您应该在创建新连接之前尝试关闭Sound连接(Sound.close())。另外,我会使用相同的Sound对象加载新文件(Sound.load())以避免可能的GC问题(除非您需要在声音之间淡入)...

答案 1 :(得分:0)

在我看来,你错过了实际外部声音加载到新声音对象中的部分。您的示例似乎是重用相同的声音对象。应该是这样的:

var sound:Sound = new Sound();
var request:URLRequest = new URLRequest("path/to/your/sound");

sound.load(request);

sc = sound.play();

您需要本地声音变量来创建新声音,因为另一个声音实例无法加载到现有声音实例中:

  

在声音上调用load()   对象,你以后加载一个   不同的声音文件进入那个声音   宾语。加载不同的声音   文件,创建一个新的Sound对象。

您可能希望使用词典来跟踪已加载的声音。因此,当调用此方法时,您将检查声音对象是否已在字典中注册,如果是,则播放该对象而不是加载文件。

答案 2 :(得分:-2)

  正如Flash Gordon所说:“你实际上是   当你重新定义局部变量   重置它   属性“。http://www.actionscript.org/forums/archive/index.php3/t-181659.html

这条线看起来有点可疑。

sc = music.play();

不应该是:

var musicPlay = music.play();
sc = musicPlay;
相关问题