0

我正在尝试对歌曲进行编程以在我按下按钮时播放。我有六个按钮和六首歌曲;当我按下不同的按钮时,我希望播放不同的歌曲。如何编写 as3 编码,当我按下按钮时开始并播放每首歌曲,但也停止与上一个按钮相关联的上一首正在播放的歌曲。

4

2 回答 2

0

这是使用不同按钮运行库中不同歌曲的简单优化方法。请记住,这是假设它们都在您的库中命名,并遵循约定“Song1”、“Song2”等。

var soundchannel:SoundChannel = new SoundChannel(); //an audio channel to use to play sounds
addEventListener(MouseEvent.CLICK,handlesongs); // adds the event listener for mouse evens
function handlesongs(e:MouseEvent)
{
    if (e.target.name.indexOf("Song") >= 0) // if the button is a "Song" button
    {
        var songnumber = e.target.name.substr(4); // set the song number based on the button's name
        var getsong = getDefinitionByName("Song" + songnumber.toString()) as Class; // get the class of the song to play
        var songtoplay = new getsong(); // assign a variable to the song's class
        soundchannel.stop(); // stop all current sound
        soundchannel = songtoplay.play(); // play the selected song
    }
}

此外,您的按钮必须命名为:“Song1”、“Song2”。

如果您正在制作音乐播放器,此解决方案可能并不理想,但如果您只有几个声音,那么它是理想的,因为它经过了高度优化。

(请注意:使用大声音文件会大大增加 .FLA 文件的大小)

另请注意:更改此设置非常简单,以便所有歌曲都在一个数组中,并且您可以使用上面的子字符串方法在特定数组索引处播放歌曲。这可能是最好的解决方法。

于 2012-09-06T10:35:11.603 回答
0

您可以使用 SoundMixer 中的 stopAll 来取消播放 Flash 脚本中的所有声音,

import flash.media.SoundMixer;
SoundMixer.stopAll();

查看 API 参考以获取更多详细信息:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundMixer.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6

然后您只需播放与按钮关联的歌曲,至于播放歌曲您可以使用一些可用的开源 mp3 播放器(如果这是您想要播放的格式)。我在 .fla 文件中找到的一个位于此处:

http://hotpot.uvic.ca/howto/audio.htm(点击:开始,然后:我是程序员,给我代码)

于 2012-09-06T05:25:46.420 回答