amel: Flash-Sound bei onMouseOver abspielen

Hallo!

Ich verzweifle schön langsam an einem Punkt und bitte um Eure Hilfe.

Ich habe eine Flash-Sound-Datei die ich beim onMouseOver eines Bildes abspielen möchte. Es handelt sich dabei um eine Art "Info-Button", dass bei onMouseOver ein DIV mit einem Text anzeigt und gleichzeitig diesen Text sozusagen "vorlest". Nun das funktioniert halbwegs gut in IE, jedoch in FF habe ich meine Probleme.

In IE wird die Datei beim ersten Mal drüber fahren abgespielt und anschließend nicht mehr bis zum nächsten refresh, aber damit kann ich leben.
In FF wird die Datei beim Laden der Seite SOFORT abgespielt und geht dann beim drüberfahren nicht mehr.

Nun wie habe ich das eingebunden? Ich habe zwei verschiedene Varianten versucht und mit beiden komme ich zum selben Ergebnis.

Die erste Variante ist mit <EMBED - Objekt:

EINBETTUNG:
<EMBED NAME='hinweis' SRC='hinweis.swf' LOOP=false AUTOSTART=false MASTERSOUND HIDDEN=true WIDTH="0" height="0"></embed>

AUFRUF:
onmouseover="MM_controlSound('play','document.hinweis','file:hinweis.swf')"

JAVASCRIPT:
function MM_controlSound(x, _sndObj, sndFile) { //v3.0
  var i, method = "", sndObj = eval(_sndObj);
  if (sndObj != null) {
    if (navigator.appName == 'Netscape') method = "play";
    else {
      if (window.MM_WMP == null) {
        window.MM_WMP = false;
        for(i in sndObj) if (i == "ActiveMovie") {
          window.MM_WMP = true; break;
      } }
      if (window.MM_WMP) method = "play";
      else if (sndObj.FileName) method = "run";
  } }
  if (method) eval(_sndObj+"."+method+"()");
  else window.location = sndFile;
}

Habe bei dieser Variante auch mit AUTOSTART=0 probiert, hilft nicht.

Die 2te Variante ist mit <OBJECT:

EINBETTUNG:
<object type="application/x-shockwave-flash" id="hinweis" data="hinweis.swf" width="0" height="0">
<param name="movie" value="hinweis.swf">
<param name="autostart" value="false">
<param name="hidden" value="true">
<param name="swliveconnect" value="true">
</object>

AUFRUF:
onmouseover="playSound('hinweis');"

JAVASCRIPT:
function playSound (flashID) {
 var movie = findFlash(flashID);
 movie.Play();
}

function stopSound (flashID) {
 var movie = findFlash(flashID);
 movie.Stop();
}

function findFlash (flash) {
 if (document.all) {
 if (document.all[flash]) {
 return document.all[flash];
 }
 if (window.opera) {
  var movie = eval(window.document + flash);
  if (movie.SetVariable) {
  return movie;
  }
 }
 return;
 }
 if(document.layers) {
 if(document.embeds) {
  var movie = document.embeds[flash];
  if (movie.SetVariable) {
  return movie;
  }
 }
 return;
 }
 if (!document.getElementById) {
 return;
 }
 var movie = document.getElementById(flash);
 if (movie.SetVariable) {
 return movie;
 }
 var movies = movie.getElementsByTagName('embed');
 if (!movies || !movies.length) {
 return;
 }
 movie = movies[0];
 if (movie.SetVariable) {
 return movie;
 }
 return;
}

Ich bitte um HILFE!! DANKE

Schöne Grüße aus dem verschneiten Österreich!!

  1. Hellihello amel,

    wenn ich das recht sehe, baut die Funktion einen Javascriptbefehl zusammen: eval(_sndObj+"."+method+"()"); also zB document.hinweis.play() (bzw. run() für andere Browser).

    Du könntest beim Testen mal dies Direkt aufrufen. U.u. läuft dein Sound-Flash-File ja immer still weiter und weiter und wird garnicht von vorne abgespielt? Oder in Deinem Script wird die Funktion nicht richtig aufgerufen.

    Da sind ein bissel viel unbekannte Parameter drinne, ausgedünnter Quelltext oder ein Verweis auf die Beispielseite könnten helfen.

    Gruß,

    frankx