我正在做一个 Flash 项目,其中有十三个不同的音乐文件。我希望用户能够通过单击相应的按钮来选择正在播放的歌曲。当用户单击十三个按钮中的一个时,我希望当前歌曲停止,新歌曲从头开始播放,这样不会有声音重叠。
当我测试我的电影时,我发现最初,一些按钮会停止其他音乐,但有些不会,并且新音乐会在当前音乐上播放(我确信每个按钮的代码都是相同的,除非有实例名称)最初起作用的按钮,单击几下后停止工作。这些按钮可以完成我需要的一切,除了停止已经播放的音乐。
我使用教程来了解如何使用 ActionScript 代码播放和控制库中的声音文件,但我的代码无法正常工作以停止声音文件。我不确定为什么会这样,所以我会在这里发布一些代码。我有很多代码,因为有 13 个不同的按钮,所以我只会发布一个按钮的代码。其余按钮的代码相同,只是数字后缀更改为特定于每个按钮。所有代码都在同一符号的第 1 帧上。
var music1Play:Music1 = new Music1();
var music1Channel:SoundChannel = new SoundChannel();
btnPiece1.addEventListener(MouseEvent.CLICK, playMusic1);
function playMusic1(e:MouseEvent):void
{
music2Channel.stop();
music3Channel.stop();
music4Channel.stop();
music5Channel.stop();
music6Channel.stop();
music7Channel.stop();
music8Channel.stop();
music9Channel.stop();
music10Channel.stop();
music11Channel.stop();
music12Channel.stop();
music13Channel.stop();
btnPiece1.mouseEnabled = false; /*Disables button to avoid double click*/
btnPiece1.mouseChildren = false;
btnPiece2.mouseEnabled = true; /*Enables the other buttons*/
btnPiece3.mouseEnabled = true;
btnPiece4.mouseEnabled = true;
btnPiece5.mouseEnabled = true;
btnPiece6.mouseEnabled = true;
btnPiece7.mouseEnabled = true;
btnPiece8.mouseEnabled = true;
btnPiece9.mouseEnabled = true;
btnPiece10.mouseEnabled = true;
btnPiece11.mouseEnabled = true;
btnPiece12.mouseEnabled = true;
btnPiece13.mouseEnabled = true;
music1Channel = music1Play.play();
music1Channel.addEventListener(Event.SOUND_COMPLETE, loopMusic1);
}
function loopMusic1(e:Event):void
{
music1Channel = music1Play.play();
music1Channel.addEventListener(Event.SOUND_COMPLETE, loopMusic1);
}
请让我知道代码有什么问题或建议我可以使用的另一种方法。
谢谢,
克里斯