Схема размещения Flash, ошибка или функция? - PullRequest
0 голосов
/ 10 февраля 2011

Имея следующий код:

var loadingSoundTitle:String;
var loadingSound:Sound = new Sound();
function loadFile(str:String)
{
    loadingSound = new Sound(); //(1)
    loadingSoundTitle = str;
    try
    {
        loadingSound.load(new URLRequest(loadingSoundTitle));
    }
    catch(err:Error)
    {
        trace(err.message);
    }
}

Не работает, если есть строка, помеченная (1), однако, если я закомментирую эту строку, она сможет загрузить один единственный файл перед ним.перестает работать.

Использование ActionScript 3.0 под CS5

Редактировать: я совершенно новичок во флэш-памяти!

loadingSound.addEventListener(Event.COMPLETE, function(e:Event)
{
    list.addItem({label:loadingSoundTitle, data:loadingSound});
    process.value = 0; //for the nice little processbar I got :)
});

1 Ответ

2 голосов
/ 10 февраля 2011

Здесь много чего не хватает.Я думаю, что я вижу, в чем ваша проблема, хотя.Во-первых, AS3 liveocs скажет вам, что экземпляр объекта Sound может загрузить один и только один внешний mp3, поэтому неудивительно, что удаление строки, отмеченной // (1), будет работать, но только один раз.

Другая проблема, которую я вижу здесь, заключается в том, что когда вы делаете включаете строку, помеченную // (1), вы никогда не вызываете loadingSound.addEventListener (Event.COMPLETE, onCompleteHandler) илиподобное, аналогичное, похожее.Вы можете добавить его к своему старому звуковому объекту (если это не так, он здесь не изображен), но вы определенно не добавляете его к своему новому.Таким образом, если у нового звука нет возможности сообщить о том, что он завершил загрузку, невозможно воспроизвести его после того, как он будет сделан, потому что вы никогда не узнаете, когда это будет сделано.

Вместо многократной загрузки звука снова и снова, лучшеспособ справиться с этим - загрузить звук один раз, а затем просто воспроизвести его по мере необходимости.

РЕДАКТИРОВАТЬ:

Теперь, когда я вижу код слушателя, я почти уверен, что это проблема.

  1. Он не находится внутри вызова функции сразу после создания нового звукового объекта.Вы должны добавить новый слушатель для каждого нового экземпляра объекта, который вы создаете.
  2. Он использует анонимную несвязанную функцию.

Эту функцию вам придется добавлять каждый раз, когда вы создаетеновый звук, а не только в первый раз.

...