близко (): недействительным
Закрывает поток, вызывая прекращение любой загрузки данных.
попробуйте это:
создайте логическое значение типа hasLoaded , установите для него значение false. Когда звук успешно загрузится, установите его в значение true.
Затем при воспроизведении звука вы можете проверить наличие hasLoaded в функции play () . Если вы вызывали play () до загрузки предыдущего звука, hasLoaded будет иметь значение false, в этом случае вы вызываете this._Sound.close () до создание и загрузка нового звука. Причина тестирования вместо простого вызова close () заключается в том, что если вы приостановили поток, вам не нужно перезагружать его, чтобы воспроизвести его снова.
Сложение:
Что касается нагрузки, которая не сообщает должным образом, у вас неправильно настроена логика выполнения. Попробуйте это:
1) импорт flash.events.ProgressEvent
2) Для слушателя замените this.addEventListener (Event.ENTER_FRAME, listener_bytesLoaded); в вашем методе play () с помощью this._Sound.addEventListener (ProgressEvent.PROGRESS, listener_bytesLoaded);
3) Измените метод listener_bytesLoaded () следующим образом:
private function listener_bytesLoaded(event:ProgressEvent)
{
var percent = event.bytesLoaded / event.bytesTotal;
this._Loader_bar.progress(percent);
var data = {
i : this.i,
float : percent,
loaded : event.bytesLoaded,
total : event.bytesTotal
};
ExternalInterface.call('swf2js', 'tst_progress', data);
this.i++;
}
4) Изменить this.removeEventListener (Event.ENTER_FRAME, listener_bytesLoaded);
в вашем методе listener_loadedComplete () для this._Sound.removeEventListener (ProgressEvent.PROGRESS, listener_bytesLoaded); а затем переместите его из этого метода и поместите его в условное выражение в методе close ().
ПРИМЕЧАНИЕ. На самом деле я не компилировал, но думаю, что это хорошо. Надеюсь, это поможет. :)