WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 10.07.2001, 22:16   #1
harakiri
Veteran
 
Registriert seit: 19.04.2000
Beiträge: 444


harakiri eine Nachricht über ICQ schicken
Frage java-script für wave abspielen bei mouseOver?

hi,

ich möchte auf einer homepage wave-files automatisch abspielen lassen(am liebsten in einer loop), sobald der mauszeiger über einer bestimmten grafik steht. gleichzeitig soll auch diese grafik gegen eine andere getauscht werden.

das mit dem grafik-tauschen hab ich hinbekommen, aber wie läuft das mit dem wave-abspielen? hat jemand so ein script bzw. kennt wer die nötigen code-zeilen?

danke & lg

hara kiri
harakiri ist offline   Mit Zitat antworten
Alt 10.07.2001, 23:09   #2
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard mein vorschlag:

du definierst einen unsichtbaren layer, sobald der mouseover kommt, schreibst du den inhalt dieses layers neu und zwar so, daß ein wave abgespielt wird.

ein beispiel:

<script language="javascript">
function abspielen(musicfile) {
if (document.layers) { // verwendeter browser ie?
browser = "document.all['musiklayer']";
}
else { // ns oder modzilla verwendet?
browser = "document.getElementById('musiklayer')";
}
eval(browser + ".innerHTML='<html><body><embed src='" + musicfile + "' hidden='true' volume='100' loop='true'></body></html>");
}
</script>

<html>
<a onmouseover="abspielen('musik1.wav')">[img]button1.jpg[/img]</a>


<a onmouseover="abspielen('musik2.wav')">[img]button2.jpg[/img]</a>
<div id="musiklayer" style="position:absolute; top:0px; left:0px; height:1px; width:1px;"></div>
</html>

hoffe das hilft dir weiter.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 12.07.2001, 12:40   #3
MUCH
Elite
 
Registriert seit: 11.08.2000
Beiträge: 1.412


MUCH eine Nachricht über ICQ schicken
Standard

@RaistlinMajere:


Herzlichen Dank für Dein script!

NUR: Es läuft nicht, da ich Deine HTML-Zeile nicht richtig einbinden kann:
Wie kommt Dein:
<html>
<a onmouseover="abspielen('musik1.wav')">[img]button1.jpg[/img]</a>


<a onmouseover="abspielen('musik2.wav')">[img]button2.jpg[/img]</a>
<div id="musiklayer" style="position:absolute; top:0px; left:0px; height:1px; width:1px;"></div>
</html>



richtig in diese meine Zeile (unten) für mein Rollover rein????
Anm.: Ich möchte nur einen einzelnen "Klicksound" beim drüberfahren über den unten definierten button...


<p align="center" style="word-spacing: 0; line-height: 100%; margin: 0">[img]michi_klick.gif[/img]</p>



danke nochmals!!!
____________________________________
Liebe Grüsse

Michi
MUCH ist offline   Mit Zitat antworten
Alt 12.07.2001, 12:50   #4
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Blinzeln @much:

oops, den <body> tag sollte man beim html-anteil ned vergessen, klar, daßt ihn ned gscheit einbinden kannst, sorry.

wenn du nur einen kurzen klicksound abspielen willst (ich nehme mal an, für jeden button dasselbe soundfile, also kannst den übergabeparameter fürs file hier sparen, im gegensatz zu dem script fürn harakiri, wo für jeden button ein anderes wave abgespielt wird), mußt das loop natürlich auf "false" setzen (sonst hörst, sobald der eventhandler erfolgt ständig wiederholendes klicken), das script sieht dann für dich angepaßt so aus:

<script language="javascript">
function abspielen() {
if (document.layers) { // verwendeter browser ie?
browser = "document.all['musiklayer']";
}
else { // ns oder modzilla verwendet?
browser = "document.getElementById('musiklayer')";
}
eval(browser + ".innerHTML='<html><body><embed src='klick.wav' hidden='true' volume='100' loop='false'></body></html>");
}
</script>

<html>
<body>
<a onmouseover="abspielen()">[img]button1.jpg[/img]</a>


<a onmouseover="abspielen()">[img]button2.jpg[/img]</a>
<div id="musiklayer" style="position:absolute; top:0px; left:0px; height:1px; width:1px;"></div>
</body>
</html>

sodala, jetzt sollts aba gehn, wie gesagt, sorry, daß ich vorher den <body>-tag vergessen hab.

für deinen eigenen quelltext sähe das dann so aus (ich tu mal das ganze meiner meinung nach unnötige zeug weg, mit welchem prog arbeitest du denn?):

<p align="center">[img]michi_klick.gif[/img]</p>

also das stylesheet kannst dir sparen, das checkt normalerweise ein browser automatisch, den fett-tag [b] auch, ist ja hier kein text im spiel, sondern ein bild (wenn die width- und height-angaben den tatsächlichen abmessungen des bilds entsprechen, kannst dir diese angaben auch sparen, des checkt der browser normalerweise auch so).
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 12.07.2001, 14:33   #5
MUCH
Elite
 
Registriert seit: 11.08.2000
Beiträge: 1.412


MUCH eine Nachricht über ICQ schicken
Standard

@RaistlinMajere:

...geht leider immer noch nicht -habe Dir eine private email an deine GMX-Adresse geschickt!

danke!
MUCH ist offline   Mit Zitat antworten
Alt 13.07.2001, 10:20   #6
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard kleiner fehler

die browserunterscheidung sieht so aus:

if (document.layers) {
document.layers("musiklayer")... ist für NS
}
else {
document.getElementById("musiklayer")... ist für IE, NS6, MODZILLA
}
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 15.07.2001, 01:49   #7
harakiri
Veteran
 
Registriert seit: 19.04.2000
Beiträge: 444


harakiri eine Nachricht über ICQ schicken
Standard

erstmals vielen dank für deine hilfe!

bin leider nicht früher dazu gekommen deine tips zu implementieren...

leider steckt aber irgendwo noch der wurm drin, denn sobald die funktion abspielen() aufgerufen wird gibts eine fehlemeldung vom ie5.5:

In dem Skript auf dieser Seite ist ein Fehler aufgetreten.
Zeile: 10
Zeichen: 2
Fehler: ';' erwartet
Code: 0


ich versteh echt nicht wo da noch ein strichpunkt fehlen soll

so schaut der source bei mir aus:

<script language="javascript">
function abspielen(musicfile) {
if (document.layers) { // verwendeter browser ns?
browser = "document.layers('musiklayer')";
}
else { // verwendeter browser ie, ns6, modzilla?
browser = "document.getElementById('musiklayer')";
}
eval(browser + ".innerHTML='<html><body><embed src='" + musicfile +
"' hidden='true' volume='100' loop='true'></body></html>");
}
</script>

<html>
<body>
<a onmouseover="abspielen('chimes.wav')">[img]1.gif[/img]</a>


<a onmouseover="abspielen('chimes.wav')">[img]2.gif[/img]</a>
<div id="musiklayer" style="position:absolute; top:0px; left:0px; height:1px; width:1px;"></div>
</body>
</html>


bin echt ratlos...nochmals danke jedenfalls

hara kiri
harakiri ist offline   Mit Zitat antworten
Alt 16.07.2001, 10:39   #8
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard hmm

also finden tu ich den fehler hier auch nicht, müßte eigentlich gehen, kannst jetzt nur auf bugsuche gehen und das script mal etwas vereinfachen [kannst generell aber auch einiges vereinfachen, da z.b. immer dasselbe file abgespielt werden soll, kannst dir den übergabeparameter "musicfile" sparen, somit entfällt auch die stringzusammensetzung und das eval wird unnötig (da liegt irgendwo der fehler). loop solltest du auf "false" setzen, sonst wiederholst ständig das wave]. um zu wissen, ob überhaupt was in den layer geladen wird (wie gesagt, müßte eigentlich), kannst ja noch zusätzlich einen kleinen text (in meinem fall "gehts oder gehts ned")reinladen, denn du dann sehen müßtest, während das wave auch geladen wird.
probiers mal nur fürn ie:

<script language="javascript">
function abspielen() { //nur für ie, ns6 und modzilla
document.getElementById("musiklayer").innerHTML="< html><body><embed src='chimes.wav' hidden='true' volume='100' loop='false'>gehts oder gehts ned</body></html>";
}
</script>

<html>
<body>
<a onmouseover="abspielen()">[img]1.gif[/img]</a>


<a onmouseover="abspielen()">[img]2.gif[/img]</a>
<div id="musiklayer" style="position:absolute; top:0px; left:0px; height:1px; width:1px;"></div>
</body>
</html>

sagma dann, obs geht.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 21.07.2001, 12:47   #9
harakiri
Veteran
 
Registriert seit: 19.04.2000
Beiträge: 444


harakiri eine Nachricht über ICQ schicken
Lächeln

so...habs jetzt zum laufen gebracht...wie du richtig vermutet hast war ein einfaches hochkomma im eval teil abgängig...

nachdem das geloopte wave aber auch wieder aufhören soll wenn der mauszeiger aus dem image rausgeht habe ich noch eine zweite funktion implementiert:

<script language="JavaScript"
<!--
function playing(musicfile) {
if(document.layers) { // ie used?
browser = "document.all['musiclayer']";
}
else { // ns or modzilla used?
browser = "document.getElementById('musiclayer')";
}
eval(browser + ".innerHTML='<html><body><embed src=" + musicfile
+ " hidden=true volume=100 loop=true></body></html>'");
}

function stop_playing() {
if(document.layers) {
browser = "document.all['musiclayer']";
}
else { // ns oder modzilla verwendet?
browser = "document.getElementById('musiclayer')";
}
eval(browser + ".innerHTML=''");
}
//-->
</script>

<html>
<body>
<a onmouseover="playing('test.wav')" onmouseout="stop_playing()" >[img]1.gif[/img]</a>


<div id="musiclayer" style="position:absolute; top:0px; left:0px; height:1px; width:1px;"></div>
</body>
</html>

also vielen dank nochmals,

hara kiri
harakiri ist offline   Mit Zitat antworten
Alt 21.07.2001, 13:10   #10
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

wenns sichs nur um ein soundfile handelt (also einen klick z.b.) würde ich sowieso das loop auf false setzen, dann ersparst dir die funktion stop-playing().
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:01 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag