Edit:
Название вашего вопроса немного вводит в заблуждение, ответ, который я дал вам, является решением вопроса, выраженного в заголовке.
Глядя на ваш код, я бы посмотрел на разделение проблем, с одной стороны, вы хотите загрузить данные песни, с другой стороны, вы хотите контролировать звуки. Я бы реализовал отдельные классы для каждого концерна. Если вы создадите отдельный класс для своего элемента управления проигрывателем, вы сможете отправлять событие внутри этого класса, чтобы оно не всплывало во всем приложении и не вызывало ваши функции несколько раз.
// Предыдущий ответ
Вы можете сделать это, применив логическое значение, которое будет установлено при остановке или воспроизведении звука.
В любом случае вот еще один способ отфильтровать нежелательные клики
private function playSong(event:MouseEvent ):void
{
// set up a conditional to identify your button ,
// here's an example...
if( event.currentTarget.name is "PlayBtn" )
{
//do whatever
//then...
event.stopImmediatePropagation();
}
}
Это, как говорится, в вашем случае звучит немного быстро, так как MouseEvent не должен запускать функцию воспроизведения несколько раз ...
Имеет смысл отладить ваш код, чтобы понять, почему после щелчка мышью отправляется несколько событий
private var _isPlaying:Boolean;
public function playSong(e:Event):void
{
if(sc != null)
{
sc.stop();
_isPlaying = false;
}
if( !_isPlaying )
{
sc = currentSound.play(CurrentPos);
_isPlaying = true;
trace("HELLO !!!");
}
}