SWiSH Forum
Forum użytkowników programów SWiSH

SWiSH Max - Problem z ładowaniem zewnętrznych MP3 (loadSound())

darekk84 - Nie 05 Paź, 2014 22:24
Temat postu: Problem z ładowaniem zewnętrznych MP3 (loadSound())
Witam

tworzę pewien projekt w SWiShu. Jego jednym z głównych elementów jest ładowanie i odtwarzanie zewnętrznych plików mp3.

Wykorzystuje głównie następującą funkcję np:

onFrame (151) {
mySound=new Sound();
mySound.loadSound("sound/stale/lektor/s14.mp3");
mySound.start("0,1");
mySound.onSoundComplete = function () { _parent.nextFrameAndPlay();};
}

Loklalnie wszystko działa tak jak należy. Niestety pojawił się problem po wrzuceniu prawie gotowego swf na serwer. Niestety pliki nie są wczytywane i animacja się zatrzymuje.
Co może być przyczyną, że pliki są wczytywane lokalnie i animacja działa poprawnie, a po przesłanie na serwer (taka sama struktura plików/katalogów) niestety animacja dochodzi do odtworzenia pierwszego pliku i się zatrzymuje (plik nie jest wczytywany). Dodam, że wielkość pojedynczych plików to kilka kb więc nie powinno być to problemem.

Aby znaleźć błąd stworzyłem bardzo prosty plik tylko żeby przetestować działanie funkcji na serwerze (az.pl)

onFrame (1) {
mySound=new Sound();
mySound.loadSound("1.mp3");
mySound.start("0,1");
}

Niestety w takiej formie również nie działa pomimo, że plik 1.mp3 jest na tym samym poziomie co swf. Sprawdziłem wszystkie możliwe przeglądarki i ani razu plik nie został wczytany i odtworzony.

Proszę o pomoc, co może być przyczyną nie działania funkcji na serwerze a prawidłowego działania lokalnie. Spędziłem dziś cały dzień na poszukiwani rozwiązania, niestety bez skutku.

Pozdrawiam
Darek

Januszr - Pon 06 Paź, 2014 06:09

a jak spróbujesz podać ścieżkę do pliku z pełnym adresem typu: http://www.mojastrona.dom/pliki/..../1.mp3 ?
eden - Pon 06 Paź, 2014 09:16

Kod jest poprawny. Twoim problemem jest prawdopodobnie czas reakcji serwera.

W liniach
Cytat:
mySound=new Sound();
mySound.loadSound("sound/stale/lektor/s14.mp3");


Tworzysz obiekt i ładujesz plik. Ale na serwerze www, jest większy lag odpowiedzi niż na dysku lokalnym. Plik nie zdąży załadować się do obiektu zanim następna linia kodu się wykona:
Cytat:
mySound.start("0,1");

Obiekt mySound jest jeszcze pusty, niema ustawionego streamowania na true. Dlatego w rezultacie nic się nie dzieje.

Rozwiążesz to przy pomocy funkcji callbackowej "onLoad"

Cytat:

onFrame (151) {

mySound=new Sound();
my_sound.onLoad = function(success:Boolean) {
if (success) { mySound.start(); }
};
mySound.loadSound("sound/stale/lektor/s14.mp3");
mySound.onSoundComplete = function () { _parent.nextFrameAndPlay();};


}


Alternatywnym rozwiązaniem było by rozdzielenie tworzenia obiektu na znacznie wcześniejsze klatki, a na klatce 151 danie samej instrukcji .start()


Powered by phpBB modified by Przemo © 2003 phpBB Group