Autor | Zpráva | ||
---|---|---|---|
smala Profil * |
#1 · Zasláno: 19. 6. 2012, 15:18:09
Zdravim,
mam element <audio>, ve kterem se pri nejake akci prehraje zvuk.. ja bych potrebval aby se ten zvuk prehral pokazde kdyz se ta akce vyvova, tedy i v pripade ze zvuk jeste hraje z predchozi akce PR: chci simulovat zvuk vystrelu pri stisknuti tlacitka <button onclick="document.getElementById("audioShoot").play();">Vystrel</button> <audio id="audioShoot" src="ShotGunFire.wav"></audio> Dekuji za pomoc |
||
peta Profil |
smala:
Tak si udelej casovac, ktery zjistuje, zda zvuk hraje. Pokud ano, onclick pricte do promenne +1. Casovac pak po skonceni zvuku spusti zvuk znova a soucasne z promenne odecte -1. Priklady na setTimeOut si budes muset nejspis vygooglovat, jpw je na tohle dost strohe. JavaScript -- příklady » Datum, čas a časování Mozna daleko lepsi by bylo spustit ten druhy zvuk hned ve zvlast elementu nez cekat na skonceni. Ono se muze stat, ze kliknes, nic se nedeje a pak vystreli uz po udalosti. |
||
smala Profil * |
#3 · Zasláno: 21. 6. 2012, 14:41:21
casovac urcite neni reseni.. dat to do vice elementu me taky napadlo, ale nezda se mi to moc elegantni, ale asi nic jinyho nezbyde.. prave me zajimalo, jestli se neda resit vicenasobnym zpoustenim toho sameho elementu
ale diky za rady ;-) |
||
1Pupik1989 Profil |
Ne, je to naprosto jednoduché, ale chvilku jsem taky tápal, když jsem psal KillyKitty :D
<button onclick="shoot();">Vystrel</button> <script type="text/javascript"> function shoot(){ MyAudio = new Audio("jmeno_souboru.koncovka"); MyAudio.play(); } </script> |
||
Chamurappi Profil |
#5 · Zasláno: 21. 6. 2012, 14:56:15
Reaguji na 1Pupika1989:
„MyAudio.play();“ Co když ještě není načtený? Podle mých zkušeností je jedinou prakticky použitelnou možností pro okamžité přehrání naládovat celý zvuk přes data: adresu.
|
||
1Pupik1989 Profil |
#6 · Zasláno: 21. 6. 2012, 15:17:45
No doba od kliknutí po přehrání není ani sekundu, takže se to dá snést. Pro hry typu Moorhuhn to stačí. Kontrolovat zda-li je soubor načtený u takto malých souborů asi ani nemá smysl.
|
||
Chamurappi Profil |
#7 · Zasláno: 21. 6. 2012, 15:25:02
Reaguji na 1Pupika1989:
Nevím, jaká je situace u současných prohlížečů, ale když jsem to řešil před rokem, tak vyrobení zvuku následované okamžitým voláním play fungovalo velmi nespolehlivě. Nehledě na velikost.
|
||
_es Profil |
#8 · Zasláno: 21. 6. 2012, 15:36:50
1Pupik1989:
„No doba od kliknutí po přehrání není ani sekundu, takže se to dá snést.“ Snáď to bude aj nejako závislé od oneskorenia a rýchlosti pripojenia. „Kontrolovat zda-li je soubor načtený u takto malých souborů asi ani nemá smysl.“ Môže predsa nastať chyba a pod. Netreba niečo kontrolovať, stačí vhodne využiť udalosti (http://www.w3.org/TR/html5/media-elements.html#handler-mediacontroller-oncanplaythrough) a načítať súbor vopred. |
||
1Pupik1989 Profil |
_es:
Na načtení souboru dopředu tam není čas. Jedině soubor cachovat. Jeden zvuk nejde spustit vícekrát. Tohle spočívá v tom, že se ten samý soubor (proměnná) nadefinuje znovu a přehraje. Pokud teda chápu dobře co si myslel. |
||
_es Profil |
#10 · Zasláno: 21. 6. 2012, 16:47:24
1Pupik1989:
„Na načtení souboru dopředu tam není čas.“ Akože „nie je čas“? Veď hra má len obmedzené množstvo zvukov, tak čo bráni tomu, načítať ich vopred pred spustením hry? „Jeden zvuk nejde spustit vícekrát.“ A to už prečo? Veď metódu play je možné zavolať hocikoľko krát.
„Tohle spočívá v tom, že se ten samý soubor (proměnná) nadefinuje znovu a přehraje.“ To je predsa veľmi nevhodný spôsob. |
||
smala Profil * |
#11 · Zasláno: 21. 6. 2012, 16:58:41
1Pupik1989:
„<button onclick="shoot();">Vystrel</button> <script type="text/javascript"> function shoot(){ MyAudio = new Audio("jmeno_souboru.koncovka"); MyAudio.play(); } </script>“ diky, tohle funguje, ale taky si myslim, ze to trochu problem s tim neustalim nacitanim souboru, jednoho a toho sameho porad dokola a trochu spozdeni tam je, nez se to nacte.. nicmene, diky i za toho... zatim asi nejlepsi, avsak celkem neelegantim zpusobem reseni, bylo nacist zvuky do vice elementu <audio> a to tolik kolik jich maximalne za sebou mohlo prijit a zpoustet je jednolive po pozadovanem case nebo udalosti.. |
||
Časová prodleva: 12 let
|
0