marsmann: EMFF stoppen bei Klick auf Link

Hallo zusammen,

ich hab den EMFF-Player, der tut auch wunderbar. Ich habe jetzt auf der Seite ein paar Buttons die Bilder austauschen, und ich möchte dass, sobald man auf einen Button klickt, die Musik ausgeht (ich kenne die Probleme mit Musik ;-)). Mit der Suche habe ich diesen Code gefunden:

  
var movie = findeFlash('musik');  
movie.Stop();

die Funktion findeFlash() ist vorher definiert. Ich bekomme jetzt die Fehlermeldung, dass movie.Stop() keine Funktion sei.

Prinzipiell ist es doch richtig, dass ich per JS den EMFF stoppen kann, richtig?
Ist das oben der richtige Ansatz über diese Funktion .Stop() oder kann mir jemand auf die Sprünge helfen wie der Ansatz geht?
Kann ich eigentlich, wenn ich darauf zugreifen will, direkt die ID verwenden oder muss ich da etwas Besonderes beachten da es sich um Flash handelt?

Viele Grüße,
Mars

  1. Hallo!

    Tatsächlich ist es so, dass Du mit der Methode "Stop()" jedes Flash anhalten kannst, daher ist es auch möglich, sich den Player per ID zu holen.

    Gruß, LX

    --
    RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
    RFC 1925, Satz 11a: Siehe Regel 6a
    1. Hallo!

      Tatsächlich ist es so, dass Du mit der Methode "Stop()" jedes Flash anhalten kannst, daher ist es auch möglich, sich den Player per ID zu holen.

      Gruß, LX

      Hi LX,

      vielen Dank. Mein Problem ist aber dass ich mit der Methode immer einen Fehler bekomme. Hat jemand eine Ahnung was den Fehler verursacht?
      Ich greife doch auf das object zu, das den EMFF-Player enthält, und wende dann auf dieses Objekt die Methode an, oder?

      Gruß,
      Mars

      1. Hi,

        vielen Dank. Mein Problem ist aber dass ich mit der Methode immer einen Fehler bekomme. Hat jemand eine Ahnung was den Fehler verursacht?
        Ich greife doch auf das object zu, das den EMFF-Player enthält, und wende dann auf dieses Objekt die Methode an, oder?

        Woher sollen wir das wissen, wenn du uns gar nicht zeigst, was die Funktion findeFlash macht?

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Sorry, also hier der ganze Code:

            
                  <object type="application/x-shockwave-flash" data="/fileadmin/emff_easy_glaze.swf" width="32" height="32" id="musik" name="musik">  
          	 <param name="movie" value="emff_easy_glaze.swf" />  
          	 <param name="bgcolor" value="white" />  
          	 <param name="FlashVars" value="src=fileadmin/test.mp3&amp;autostart=yes&amp;repeat=yes" />  
          	</object>  
          
          

          Javascript:

            
          function findeFlash (flash) {  
              if (document.all) {  
                if (document.all[flash]) {  
                  return document.all[flash];  
                }  
                if (window.opera) {  
                  var musik = eval(window.document + flash);  
                  if (musik.SetVariable) {  
                    return musik;  
                  }  
                }  
                return;  
              }  
              if(document.layers) {  
                if(document.embeds) {  
                  var musik= document.embeds[flash];  
                  if (musik.SetVariable) {  
                    return musik;  
                  }  
                }  
                return;  
              }  
              if (!document.getElementById) {  
                return;  
              }  
              var musik= document.getElementById(flash);  
              if (musik.SetVariable) {  
                return musik;  
              }  
              var musika = musik.getElementsByTagName('object');  
              if (!musika || !musika.length) {  
                return;  
              }  
              musik = musika[0];  
              if (musik.SetVariable) {  
                return musik;  
              }  
              return;  
            }  
          
          

          Und in der Funktion, die aufgerufen wird wenn die Musik stoppen soll:

            
             var musik= findeFlash('musik');  
             musik.stop();  
          
          

          Ich hatte auch schon versucht den Player über den Namen direkt anzusprechen, also:

            
                  if (document.all) {  
                    document.all['musik'].stop();  
                    }  
                  else if (document.layers) {  
                    document.musik.stop();  
                    }  
                  else if (document.getElementById) {  
                    document.getElementById('musik').stop();  
                    }  
          
          

          Beides funktioniert nicht. Sieht jemand direkt einen Fehler?

          Gruß,
          Mars

          1. Hi,

            function findeFlash (flash) {

            Abgesehen von der groben Überflüssigkeit solcher Nonsense-Browserweichen und Spezialabfragen in der heutigen Browserlandschaft, gibt deine Funktion nur in manchen Fällen ein Objekt zurück.

            Und in der Funktion, die aufgerufen wird wenn die Musik stoppen soll:

            var musik= findeFlash('musik');
               musik.stop();

              
            Wenn die Funktion nichts zurückgegeben hat, dann enthält auch die Variable musik hier nichts sinnvolles.  
              
            MfG ChrisB  
              
            
            -- 
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
            
            1. Hi,

              danke für die Rückmeldung. Hab alles rausgeschmissen, es bleibt aber das Problem dass die Funktion .stop() nicht auf dem EMFF wirkt. Du weißt nicht zufällig ob der EMFF eine Funktion besitzt über die ich ihn per Javascript stoppen kann?

              Gruß,
              Mars

              1. Hi,

                danke für die Rückmeldung. Hab alles rausgeschmissen, es bleibt aber das Problem dass die Funktion .stop() nicht auf dem EMFF wirkt. Du weißt nicht zufällig ob der EMFF eine Funktion besitzt über die ich ihn per Javascript stoppen kann?

                Gruß,
                Mars

                Okay, Probleme gelöst. Falls mal wieder so etwas sucht: der Zanmantou-Player hat so eine Funktion, ist zwar etwas komplizierter als der EMFF, aber sehr gut konfigurierbar. Mit dem funktioniert jetzt alles so wie es soll.

                Allen nochmals vielen Dank für die Hilfe!

                Gruß,
                Mars

    2. Tatsächlich ist es so, dass Du mit der Methode "Stop()" jedes Flash anhalten kannst

      Das trifft afaik auf eine simple Flash Animation aus z.B. 200 Frames zu, die man so z.B. bei Frame 40 stoppen kann. "Stop()" ist das Pendant zu "rechte Maustaste auf Flash und Anhalten klicken".

      Das EMFF Ding wird aber vermutlich aus max. 2 Frames bestehen, der Rest ist ActionScript. Ergo hilft dir "Stop()" hier nicht.

      Soweit EMFF dir keinen explizieten JavaScript Zugriff bietet, kannst du dir wie folgt helfen: Entferne dein Flash Object aus dem DOM, dann wird es auch verstummen.