当我按下按钮时,我正在尝试编写要播放的歌曲。我有六个按钮和六首歌曲;当我按下不同的按钮时,我想要播放不同的歌曲。如何编写as3编码,当我按下按钮时启动并播放每首歌曲,但也会停止播放与前一个按钮相关的上一首歌曲。
答案 0 :(得分:0)
您可以使用SoundMixer中的stopAll取消播放Flash脚本中的所有声音,
import flash.media.SoundMixer;
SoundMixer.stopAll();
查看API参考以获取更多详细信息:
然后你只需播放与按钮相关的歌曲, 至于播放歌曲,您可以使用一些可用的开源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文件的大小)
另请注意: 更改它以使所有歌曲都在一个数组中是非常简单的,并且您使用上面的子字符串方法在特定的数组索引处播放歌曲。这可能是最好的方法。