Sound zu bestimmten Uhrzeiten abspielen
raphael
- javascript
Hallo!
Ich habe die Aufgabe, eine Kanone zu jeder vollen Stunde abzufeuern. Bisher bin ich soweit, dass das Gif-Ani abgespielt wird.
Aber mit dem Sound klappt das nicht. Ich wollte das so lösen:
-------------------------------------------------------------
<html>
<head>
<title></title>
<meta name="author" content="Raphael">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<script language="javascript">
<!--
function uhrzeit() {
heutigesDatum = new Date();
std = heutigesDatum.getHours();
min = heutigesDatum.getMinutes();
sek = heutigesDatum.getSeconds();
zeit = std+':'+min+':'+sek;
document.forms[0].uhr.value = zeit;
setTimeout("uhrzeit()",1000);
if(min==44)
if(sek==5)
{
a.src="../images/icon14.gif"
b.src="sound1.wav"
}
if(min==44)
if(sek==10)
{
a.src="../images/icon13.gif"
}
}
-->
</script>
</head>
<body onLoad="uhrzeit()">
<form><input type="text" name="uhr" value="" size="20"></form>
<img name="a" src="../images/icon13.gif">
<embed name="b" autostart="false" loop="false" hidden="true" height="0" width="0">
</body>
</html>
-------------------------------------------------------------
kann mir einer sagen, warum es nicht funktioniert?
Wollte ich auch schon immer mal haben (Stundenschlag und so).
Danke für die Vorlage der Zeit-Routinen (hat mir Arbeit erspart).
Ich habe nun den Sound eingebaut und auch den Bildwechsel an Netscape angepaßt.
Bei mir läuft es super (IE5.5 + NS4).
Werde gleich mal nach "gong.wav" in den Suchmaschinen suchen lassen.
Vieleicht gibt es aber auch schon einen in Windows.
IE-Sound läuft immer. Für Netscape muß der Browser voll installiert sein, minimal reicht nicht (Plugins fehlen dann.)
Für Netscape wird auf den Netscape-typischen <embed>-Tag verzichtet (läuft einfach zu selten), dafür erscheint ein Mini-Popup. Wen dies stört, kann ja ein paar sekunden später Sound() aufrufen, dann wird es automatisch wieder geschlossen.
<html>
<head>
<script language="javascript">
<!--
var getan = new Array() // Global
function uhrzeit() {
var Jetzt = new Date();
var std = Jetzt.getHours();
var min = Jetzt.getMinutes();
var sek = Jetzt.getSeconds();
var zeit = xx(std)+':'+xx(min)+':'+xx(sek);
document.forms[0].uhr.value = zeit;
setTimeout("uhrzeit()",1000);
/*
Beim Bildaufbau werden Timer angehalten, daher bei Sekunden nicht den genauen zeitpunkt abfragen,
sondern ob sie in einem gewissen Bereich liegen (für maximale Zuverlässigkeit nur die Minute abfragen).
Dann abfragen, ob die Aktion für diesen Zeitbereich schon ausgeführt wurde.
*/
// Wichtig: getanX-Variablen entweder global außerhalb der Funktion definieren
// oder gar nicht, aber nicht innerhalb der Funktion, sonst verlieren sie bei jedem Aufruf ihren Wert.
var g=0
if( min==39 && inBereich(sek,00) )
if(!getan[g]) {
getan[g]=1
aktion1()
}else; // Wichtig: else mit ; beenden
else
getan[g]=0
g++
if( min==39 && inBereich(sek,15) )
if(!getan[g]) {
getan[g]=1
aktion2()
}else; // Wichtig: else mit ; beenden
else
getan[g]=0
// Für maximale Zuverlässigkeit nur die Minute abfragen:
g++
if(min==40)
if(!getan[g]) {
getan[g]=1
aktion1()
}else; // Wichtig: else mit ; beenden
else
getan[g]=0
g++
if(min==41)
if(!getan[g]) {
getan[g]=1
aktion2()
}else; // Wichtig: else mit ; beenden
else
getan[g]=0
g++ // nur als Reserve
}
function xx(x) {
return (x>9?"":"0")+x
}
function inBereich(ist,soll){
var bereich=10
return ( ist>=soll && ist<=soll+bereich )
}
function aktion1() {
// a.src="../images/icon14.gif"
Bild("a","bild1.gif")
Sound("sound1.wav")
}
function aktion2() {
// a.src="../images/icon13.gif"
Bild("a","bild2.gif")
Sound() // = STOP, nur zur Demo
}
function Bild(name,datei) { // Bildwechsel. Bei NS bitte gleiche Größe, sonst Verzerrung
// name.src=datei // Kurzfassung nur IE, nicht NS
document.images[name].src=datei // Langfassung, IE+ NS
}
// Sound:
var PopUp = null; // global für function Sound(datei)
function Sound(datei) {
if (document.all) // IE
{
// erfordert <BGSOUND id=sound> im Dokument (head oder body):
sound.src = datei; // Kurzfassung, nur IE
// document.all.sound.src = datei; // Langfassung
}
else // NS
{
// Verzichtet auf <embed>-Tag, das nur für NS gilt und von Version zu Version unterschiedlich ist (andere Plugins)
// und meist nicht läuft.
if (PopUp != null)
if (PopUp.closed==false)
PopUp.close()
if (datei)
PopUp = window.open (datei, "Musik", "toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizeable=no,copyhistory=no,width=200,height=20") ;
// Zum Abspielen wird eine NS-Vollinstallation benötigt, keine Minimal-Installation
}
}
// Kann man stattdessen auch von Hand in's Dokument setzen (head oder body)
// aber so läßt sich das Script leichter als externes Script einbinden.
if(document.all)
document.writeln("<BGSOUND id=sound>") // loop=1/infinite AUTOSTART=true/false
//-->
</script>
</head>
<body onLoad="uhrzeit()">
<form>
<input name=uhr size=8 readonly>
<input type=button value="Aktion 1" onclick=aktion1()>
<input type=button value="Aktion 2" onclick=aktion2()>
</form>
<img name="a" src="../images/icon13.gif">
</body>
</html>