我在音乐播放器中有四种不同的曲目(吉他,贝司,鼓,人声)。它们都被命名为复选框,用于检查/取消选中当前哪一个轨道可以听到,我还有一个播放按钮开始。因此,当检查例如人声和吉他时,我只想听到这两种乐器,低音和鼓只是在后台播放静音。
问题是,当我开始检查这两个框时,我无法在播放时更改其他框,因为状态是静态的,并且在按下框时不会动态更改。
只是我的代码的摘录,只有吉他和人声才能轻松理解:
var vocals:Sound = new Sound();
var vocalsChannel:SoundChannel = new SoundChannel();
var vocalsTransform = new SoundTransform();
vocalsChannel.soundTransform = vocalsTransform;
vocals.load(new URLRequest("songsample.mp3"));
var guitar:Sound = new Sound();
var guitarChannel:SoundChannel = new SoundChannel();
var guitarTransform = new SoundTransform();
guitarChannel.soundTransform = guitarTransform;
guitar.load(new URLRequest("funky.mp3"));
voc_mc.addEventListener(MouseEvent.CLICK, _selectedVoc);
git_mc.addEventListener(MouseEvent.CLICK, _selectedGit);
function _selectedVoc(e:MouseEvent):void
{
var bool:Boolean = e.target.selected;
if(bool)
{
vocalsTransform.volume = 1;
}
else
{
vocalsTransform.volume = 0;
}
}
function _selectedGit(e:MouseEvent):void
{
var bool:Boolean = e.target.selected;
if(bool)
{
guitarTransform.volume = 1;
}
else
{
guitarTransform.volume = 0;
}
}
play_mc.addEventListener(MouseEvent.CLICK,
function(evt:MouseEvent)
{
vocalsChannel = vocals.play(0,0,vocalsTransform);
guitarChannel = guitar.play(0,0,guitarTransform);
})
stop_mc.addEventListener(MouseEvent.CLICK,
function(evt:MouseEvent)
{
vocalsChannel.stop();
guitarChannel.stop();
})
答案 0 :(得分:2)
您需要重置频道上的soundTransform属性:
function _selectedVoc(e:MouseEvent):void
{
var bool:Boolean = e.target.selected;
if(bool)
{
vocalsTransform.volume = 1;
}
else
{
vocalsTransform.volume = 0;
}
vocalsChannel.soundTransform = vocalsTransform;
}