使用多个按钮控制多首歌曲

时间:2012-09-06 05:14:24

标签: flash audio

当我按下按钮时,我正在尝试编写要播放的歌曲。我有六个按钮和六首歌曲;当我按下不同的按钮时,我想要播放不同的歌曲。如何编写as3编码,当我按下按钮时启动并播放每首歌曲,但也会停止播放与前一个按钮相关的上一首歌曲。

2 个答案:

答案 0 :(得分: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(点击:开始,然后:我是程序员,只需给我代码)

答案 1 :(得分: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文件的大小)

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