Witam, napisałem prostą grę i teraz chciałbym do niej dodać dźwięki. Chcę skorzystać z howler.js. Teraz pojawia się problem.
Chcę, aby dźwięk odtworzył się za każdym razem jak kliknę literę alfabetu, których jest 34. Są one generowanie w JSie, a nie na sztywno w HTML. Jak teraz do istniejącego skryptu game.js (moja gra) dodać funkcjonalnosci howlera, aby w game.js mógł stworzyć obiekt klasy znajdującej się w howler.js?
Howler został napisany w JS wersji starszej niż 6, więc nie ma klas, które mógłbyś zaimportować. W dokumentacji znajdziesz przykłady użycia “po staremu”.
Co oznacza ‘po staremu’? Ja mam taki problem, że nie bardzo wiem jak go użyć w innym skrypcie. Np. alfabet generuję za pomocą js-a, czyli nie ma go pierwotnie w markupie. W takim razie jak przypisać dźwięk do eventlistenera dla każdej literki alfabetu?
Znaczy znam sposób jak to rozwiązać, ale jest on bardzo nieprofesjonalny.
<script src="js/howler.core.js"></script>
<script>
let themeSong = new Howl({ src: ['sounds/theme.wav'], loop: true, volume: 0.3});
themeSong.once('load', function(){
themeSong.play();
});
</script>
Wiesz może dlaczego mając taki skrypt w HTMLu dźwięk nie zawsze rozpoczyna się od razu po załadowaniu strony? Niekiedy trzeba czekać z 2-3 sekundy.
powinieneś mieć jej funkcje w zasięgu globalnym. Nie musisz pisać kodu w blokach <script> w HTML-u. Powinieneś móc używać biblioteki w dowolnym pliku JS-owym, chociaż bez konfiguracji IDE będzie twierdziło inaczej. A że jest to nieeleganckie… Tak to wygląda, kiedy miesza się wersje języka. Możesz przejść na TypeScripta, gdzie istnieją repozytoria zapewniające zgodność howlera.
Powyższa linijka w twoim kodzie odpowiada za wyciszanie dźwięku. W miejscu, w którym metoda fade oczekuje identyfikatora dźwięku, podajesz wynik z metody pause, która wstrzymuje odtwarzanie. Możliwe, że to jest przyczyną problemów. W takim przypadku rozwiązaniem będzie wstawienie w tym miejscu jakiejś zmiennej zawierającej dany identyfikator dźwięku.