uwe: Flash mit externen dateizugriffen einbinden

Hallo Liste,

ich möchte ein flashfile einbinden was über action-script extern gelegene textdateien bzw. ressourcen einließt.

Dabei tritt folgender fehler auf:

struktur:
-root
 - index.html (html seite mit object-tag = bindet flash ein)
 - flash
   - unterordner
     - texte
     - grafiken
     - flash.swf

wenn ich jetzt in index.html die flash.swf über flash/unterordner/flash.swf einbinde kann die flash-datei die ressourcen nicht lesen. Die Datei versucht nicht die texte wie gewünscht in unterordner/texte/ zu suchen sondern bei root/texte/

Das flash-file arbeitet korrekt, wenn die html datei welche das flash file einbindet im unterordner/ liegt. Also auf gleicher ebene wie das flash-File selbst.

Hat jemand eine Idee, wie ich das umgehen kann.

p.s. iframe ist eine möglichkeit. Funktioniert auch ist aber nicht gewünscht.

mfg
  uwe

  1. Hallo Uwe!

    wenn ich jetzt in index.html die flash.swf über flash/unterordner/flash.swf einbinde kann die flash-datei die ressourcen nicht lesen. Die Datei versucht nicht die texte wie gewünscht in unterordner/texte/ zu suchen sondern bei root/texte/
    Hat jemand eine Idee, wie ich das umgehen kann.

    Von flash/unterordner/flash.swf geht es direkt zu /texte/ und nicht erst zurück auf /unterordner/texte/ würde ich vermuten.

    Beste Grüsse
    Richard

  2. Hallo uwe,

    ich möchte ein flashfile einbinden was über action-script extern gelegene textdateien bzw. ressourcen einließt.

    Dabei tritt folgender fehler auf:

    struktur:
    -root

    • index.html (html seite mit object-tag = bindet flash ein)
    • flash
         - unterordner
           - texte
           - grafiken
           - flash.swf

    wenn ich jetzt in index.html die flash.swf über flash/unterordner/flash.swf einbinde kann die flash-datei die ressourcen nicht lesen. Die Datei versucht nicht die texte wie gewünscht in unterordner/texte/ zu suchen sondern bei root/texte/

    Das flash-file arbeitet korrekt, wenn die html datei welche das flash file einbindet im unterordner/ liegt. Also auf gleicher ebene wie das flash-File selbst.

    Hat jemand eine Idee, wie ich das umgehen kann.

    Das Problem tritt bei unterschiedlichen Browsern auf - ähnlich ist es nämlich auch beim EMFF.

    Mögliche Lösungen:

    1. SWF-Datei liegt im selben Verzeichnis wie die aufgerufene Webseite.
    2. Die Pfade werden absolut angegeben - also beispielsweise /flash/unterordner/texte/ in deinem Fall.

    Ich frage mich nur, welcher Browser - IE oder Firefox - hier den Fehler begeht. Ich glaube, es ist der IE, der die Angabe fehlerhaft interpretiert. Bin gespannt, wann dieses Problem behoben wird. ;-)

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    1. Hallo Marc!

      Dabei tritt folgender fehler auf:
      struktur:
      -root

      • index.html (html seite mit object-tag = bindet flash ein)
      • flash
           - unterordner
             - texte
             - grafiken
             - flash.swf
        wenn ich jetzt in index.html die flash.swf über flash/unterordner/flash.swf einbinde kann die flash-datei die ressourcen nicht lesen. Die Datei versucht nicht die texte wie gewünscht in unterordner/texte/ zu suchen sondern bei root/texte/

      Das Problem tritt bei unterschiedlichen Browsern auf - ähnlich ist es nämlich auch beim EMFF.
      Mögliche Lösungen:

      1. SWF-Datei liegt im selben Verzeichnis wie die aufgerufene Webseite.
      2. Die Pfade werden absolut angegeben - also beispielsweise /flash/unterordner/texte/ in deinem Fall.
        Ich frage mich nur, welcher Browser - IE oder Firefox - hier den Fehler begeht. Ich glaube, es ist der IE, der die Angabe fehlerhaft interpretiert. Bin gespannt, wann dieses Problem behoben wird. ;-)

      Nach meiner Erfahrung gibt es bei korrekter Pfadangabe in keinem Browser Probleme mit dem Finden der Textdatei. Der OP müsste bei seiner Struktur ("flash.swf" und Ordner "texte" im Ordner "unterordner") mit der relativen Pfadangabe "./texte/text.txt" also klar kommen.

      Probleme treten eher auf als Folge der unkorrekten URL-Codierung der verwendeten Textdateien selbst. Das kann dann auch zu unterschiedlichem Verhalten der Browser führen. Leerzeichen und Zeilenumbrüche können da durchaus Schwierigkeiten machen.

      Beste Grüsse
      Richard

      1. Hallo Richard,

        Nach meiner Erfahrung gibt es bei korrekter Pfadangabe in keinem Browser Probleme mit dem Finden der Textdatei. Der OP müsste bei seiner Struktur ("flash.swf" und Ordner "texte" im Ordner "unterordner") mit der relativen Pfadangabe "./texte/text.txt" also klar kommen.

        Eine korrekte Pfadangabe ist nötig - aber bist du dir sicher, dass deine die richtige ist?
        Ich habe dazu im Verzeichnis http://marcreichelt.de/misc/selfhtml/soundtest/ mal ein Beispiel dazu erstellt.
        Wenn ich in den von mir genutzten Browsern die Datei test.html aufrufe, wird die Datei "sound/sound.mp3" abgespielt. Rufe ich die SWF-Datei dagegen direkt auf, so wird "swf/sound/sound.mp3" abgespielt.

        Mittlerweile ist auch bei allen von mir genutzten Browsern "sound/sound.mp3" zu hören - ich bin mir aber sicher, dass mindestens ein Browser noch vor nicht allzu langer Zeit aus der Reihe getanzt ist.

        Ist hier noch jemand mit einigen älteren Browsern (vorzugsweise IE, Opera und Firefox) und eventuell einem älteren Flash Plugin als 9 unterwegs, der mir sagen kann, was er hier hört?

        Ich habe die folgenden Browser getestet (alle mit Flash Plugin 9), und konnte immer "sound/sound.mp3" hören:

        • Firefox 2.0 (Linux / Windows)
        • Konqueror (Linux)
        • IE 6.0 (Windows 2000, mit neuesten Updates)
        • Opera 9.1 (Windows)

        Grüße

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        1. Hallo Marc!

          Eine korrekte Pfadangabe ist nötig - aber bist du dir sicher, dass deine die richtige ist?

          Ja.

          Ich habe dazu im Verzeichnis http://marcreichelt.de/misc/selfhtml/soundtest/ mal ein Beispiel dazu erstellt.

          Dir ist klar, dass es sich bei "TestURL.swf" um keine korrekte swf-Datei handelt? Was soll das einfache umbenennen bringen?

          Wenn ich in den von mir genutzten Browsern die Datei test.html aufrufe, wird die Datei "sound/sound.mp3" abgespielt.

          Das ist richtig, das entspricht deiner Pfadangabe.

          Rufe ich die SWF-Datei dagegen direkt auf, so wird "swf/sound/sound.mp3" abgespielt.

          Bei mir öffnet sich im ie7 eine leere Seite und es wird kein sound gespielt. Dies ist ein vollkommen korrektes Verhalten des Browsers, weil es sich wie gesagt bei "TestURL.swf" um keine richtige swf-Datei handelt.

          Im Firefox wird bei mir der externe Flash-Player aufgerufen, aber kein Sound abgespielt und im Player auch nicht aufgerufen. Richtig ist dies nicht, aber auf Grund der swf-Erweiterung verständlich. Vermutlich wird auf einem Rechner ohne installiertes Flash dann das Plugin des Browsers aktiv.

          Im Opera wird tatsächlich das Flash-Plugin aktiviert und der Sound "swf/sound/sound.mp3" abgespielt. Dass auf diesen und nicht auf "sound/sound.mp3" zugegriffen wird, liegt daran, dass "TestURL.swf" im Verzeichnis "swf" liegt. Dass überhaupt ein Sound gespielt wird, halte ich allerdings für einen schlechten Witz dieses Browsers.

          Als Erklärung: Das mit "TestURL.swf" solltest du ganz schnell vergessen, das ist kein korrektes Vorgehen. Richtig ist das mit der "test.html". Wenn du diese "test.html" unverändert in das Verzeichnis "/swf/" kopierst, wird der Sound "swf/sound/sound.mp3" abgespielt werden, weil dies dann diesem Pfad entspricht. Du hast jetzt zweimal "sound.mp3", aber mit unteschiedlichem Inhalt. Wenn du von "soundtest/test.html" die "swf/sound/sound.mp3" wiedergeben willst, musst du den Pfad in der "test.html" entsprechend ändern auf "swf/sound/sound.mp3". Ich verwende übrigens die Schreibweise "./swf/sound/sound.mp3", weil sich das ja auf untergeordnete Ordner bezieht.

          Ist hier noch jemand mit einigen älteren Browsern (vorzugsweise IE, Opera und Firefox) und eventuell einem älteren Flash Plugin als 9 unterwegs, der mir sagen kann, was er hier hört?
          Ich habe die folgenden Browser getestet (alle mit Flash Plugin 9), und konnte immer "sound/sound.mp3" hören:

          • Firefox 2.0 (Linux / Windows)
          • Konqueror (Linux)
          • IE 6.0 (Windows 2000, mit neuesten Updates)
          • Opera 9.1 (Windows)

          Hier müsste generell der Sound "sound/sound.mp3" abgespielt werden, das entspricht deiner Pfadangabe.

          Sag mal, weil wir gerade so schön am Plaudern sind: Gibts eigentlich den Schnecken-Schröder noch? Gehört der zum Programm des SELF-Treffens?

          Beste Grüsse
          Richard

          1. Hallo Richard,

            Dir ist klar, dass es sich bei "TestURL.swf" um keine korrekte swf-Datei handelt? Was soll das einfache umbenennen bringen?

            Welches Umbenennen?
            Natürlich handelt es sich um eine korrekte SWF-Datei - sonst könnte ich sie ja nicht mit dem Flash Plugin einbinden.
            Erstellt habe ich die Datei "TestURLs.swf" aus der Quelltext-Datei "TestURLs.as" mit dem Befehl
            mtasc -strict -wimp -swf TestURLs.swf -main -header 30:30:31:cccccc TestURLs.as
            (MTASC wird dafür benötigt).

            Wenn ich in den von mir genutzten Browsern die Datei test.html aufrufe, wird die Datei "sound/sound.mp3" abgespielt.

            Das ist richtig, das entspricht deiner Pfadangabe.

            Natürlich. Dennoch:
            Die Datei "test.html" bindet die Datei "TestURIs.swf" aus dem Unterordner "swf" ein - und TestURIs.swf lädt nicht ./swf/sound/sound.mp3, sondern ./sound/sound.mp3.
            Es kommt also darauf an, wie die Datei "TestURIs.swf" eingebunden wird.

            Rufe ich die SWF-Datei dagegen direkt auf, so wird "swf/sound/sound.mp3" abgespielt.

            Bei mir öffnet sich im ie7 eine leere Seite und es wird kein sound gespielt. Dies ist ein vollkommen korrektes Verhalten des Browsers, weil es sich wie gesagt bei "TestURL.swf" um keine richtige swf-Datei handelt.

            Falsch - "TestURLs.swf" ist eine völlig korrekte SWF-Datei. Erforsche deine Gefühle. ;-)
            Warum die Datei bei direktem Aufruf in deinem IE 7 nicht aufgerufen wird, kannst allerdings nur du prüfen - eventuell liegt das am Eolas-Patent, oder du hast das Flash Plugin nicht installiert (was ich nicht glaube), oder Microsoft hat sich mal wieder was neues ausgedacht.

            Im Firefox wird bei mir der externe Flash-Player aufgerufen, aber kein Sound abgespielt und im Player auch nicht aufgerufen. Richtig ist dies nicht, aber auf Grund der swf-Erweiterung verständlich. Vermutlich wird auf einem Rechner ohne installiertes Flash dann das Plugin des Browsers aktiv.

            Dann wird das bei dir im Firefox wohl so eingestellt sein - bei mir im Firefox 2.0 (sowohl unter Linux als auch unter Windows) wird der Flashfilm im Browser angezeigt.
            Und wenn der Film in einem externen Player aufgerufen wird, wird die Angabe "sound/sound.mp3" natürlich nur noch auf dem lokalen Dateisystem ausgeführt - und entsprechend wird keine MP3-Datei abgespielt, da keine gefunden wurde.

            Der Header der Datei ist übrigens ebenfalls korrekt:
            Date: Sun, 04 Feb 2007 00:54:09 GMT
            Server: Apache/2.2.3
            Last-Modified: Sat, 03 Feb 2007 18:54:53 GMT
            Etag: "2c00f7-12a-feddd940"
            Accept-Ranges: bytes
            Content-Length: 298
            Content-Type: application/x-shockwave-flash

            200 OK

            Das Problem scheint also bei dir zu liegen.

            Im Opera wird tatsächlich das Flash-Plugin aktiviert und der Sound "swf/sound/sound.mp3" abgespielt. Dass auf diesen und nicht auf "sound/sound.mp3" zugegriffen wird, liegt daran, dass "TestURL.swf" im Verzeichnis "swf" liegt. Dass überhaupt ein Sound gespielt wird, halte ich allerdings für einen schlechten Witz dieses Browsers.

            Es liegt nicht am Browser. Das gleiche Verhalten zeigen bei mir neben Opera 9.1 sowohl Konqueror, IE 6 und Firefox 2.0.

            Als Erklärung: Das mit "TestURL.swf" solltest du ganz schnell vergessen, das ist kein korrektes Vorgehen. Richtig ist das mit der "test.html". Wenn du diese "test.html" unverändert in das Verzeichnis "/swf/" kopierst, wird der Sound "swf/sound/sound.mp3" abgespielt werden, weil dies dann diesem Pfad entspricht. Du hast jetzt zweimal "sound.mp3", aber mit unteschiedlichem Inhalt. Wenn du von "soundtest/test.html" die "swf/sound/sound.mp3" wiedergeben willst, musst du den Pfad in der "test.html" entsprechend ändern auf "swf/sound/sound.mp3". Ich verwende übrigens die Schreibweise "./swf/sound/sound.mp3", weil sich das ja auf untergeordnete Ordner bezieht.

            Ich habe nicht umsonst zwei unterschiedliche Dateien "sound.mp3" gewählt - nämlich, um den Unterschied hören zu können.
            Ich _möchte_ ja gerade das (eventuell fehlerhafte) Verhalten von einigen Browsern provozieren, um herauszufinden, welcher Browser daneben liegt.
            Mir geht es dabei nicht um den direkten Aufruf der Datei "TestURIs.swf" - dieser dient nur dazu, um zu demonstrieren, dass hier eine andere MP3 abgespielt wird als wenn man die Webseite test.html aufruft.

            Entscheidend für mich ist das, was beim Aufruf der Datei "test.html" passiert - und bei welcher Browser- und Plugin-Version _eben nicht_ "sound/sound.mp3" abgespielt wird, sondern z. B. "swf/sound/sound.mp3" oder eventuell sogar gar nichts.

            Ist hier noch jemand mit einigen älteren Browsern (vorzugsweise IE, Opera und Firefox) und eventuell einem älteren Flash Plugin als 9 unterwegs, der mir sagen kann, was er hier hört?
            Ich habe die folgenden Browser getestet (alle mit Flash Plugin 9), und konnte immer "sound/sound.mp3" hören:

            • Firefox 2.0 (Linux / Windows)
            • Konqueror (Linux)
            • IE 6.0 (Windows 2000, mit neuesten Updates)
            • Opera 9.1 (Windows)

            Hier müsste generell der Sound "sound/sound.mp3" abgespielt werden, das entspricht deiner Pfadangabe.

            Natürlich. Aber ich erinnere mich leicht an eine ältere Version eines Browsers (oder des Flash Plugins in Kombination mit einem Browser), der an dieser Stelle (fehlerhaft) "swf/sound/sound.mp3" abspielt - und ich wüsste gerne, welche.

            Sag mal, weil wir gerade so schön am Plaudern sind: Gibts eigentlich den Schnecken-Schröder noch? Gehört der zum Programm des SELF-Treffens?

            Wie soll ich das verstehen? ;-)

            Grüße

            Marc Reichelt || http://www.marcreichelt.de/

            --
            Linux is like a wigwam - no windows, no gates and an Apache inside!
            Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
            1. Hallo Marc!

              Natürlich handelt es sich um eine korrekte SWF-Datei - sonst könnte ich sie ja nicht mit dem Flash Plugin einbinden.

              Ich hatte nicht beachtet, dass du die gleiche "TestURIs.swf" auch bei der "test.html" einbindest. Insofern muss ich mich korrigieren. Ich habe diese "TestURIs.swf" inzwischen extern getestet und sie funktioniert korrekt. Konkret weist sie an: Spiele die "sound.mp3" ab, die im Unterordner "sound" zu finden ist.

              Die Datei "test.html" bindet die Datei "TestURIs.swf" aus dem Unterordner "swf" ein - und TestURIs.swf lädt nicht ./swf/sound/sound.mp3, sondern ./sound/sound.mp3.
              Es kommt also darauf an, wie die Datei "TestURIs.swf" eingebunden wird. Über welchen Pfad die "TestURIs.swf" ins HTML-Dokument "test.html" eingebunden wird, ist irrelevant.

              Nein, das hängt davon ab, von welchem Ordner aus du die "TestURIs.swf" startest. Startest du aus dem Ordner "soundtest", wird "sound/sound.mp3" aufgerufen, startest du aus dem Ordner "swf" erreichst du die "swf/sound/sound.mp3". Deshalb wird mit der "test.html" "sound/sound.mp3" gespielt und beim direkten Startversuch mit "TestURIs.swf" entsprechend "swf/sound/sound.mp3", soweit dies überhaupt funktioniert. Über welchen Pfad du die "TestURIs.swf" ins HTML-Dokument "test.html" einbindest, ist völlig irrelevant.

              Falsch - "TestURLs.swf" ist eine völlig korrekte SWF-Datei. Erforsche deine Gefühle. ;-)

              Also mein Gefühl sagt, dass die Datei rein technisch korrekt sein mag, nicht aber ihrer Funktion und ihrem Sinn nach. ;-)

              Warum die Datei bei direktem Aufruf in deinem IE 7 nicht aufgerufen wird, kannst allerdings nur du prüfen - eventuell liegt das am Eolas-Patent, oder du hast das Flash Plugin nicht installiert (was ich nicht glaube), oder Microsoft hat sich mal wieder was neues ausgedacht.

              Überleg doch mal ... die eine Flash-Datei wird angezeigt und die andere nicht.

              Dann wird das bei dir im Firefox wohl so eingestellt sein - bei mir im Firefox 2.0 (sowohl unter Linux als auch unter Windows) wird der Flashfilm im Browser angezeigt.

              Das System ist so eingestellt, dass Dateien mit der Erweiterung *.swf im externen Flash-Player geöffnet werden, was ich aber schon sagte. Übrigens wird im Firefox auch bei der "test.html" kein sound gespielt, die Seite aber richtig aufgebaut.

              Und wenn der Film in einem externen Player aufgerufen wird, wird die Angabe "sound/sound.mp3" natürlich nur noch auf dem lokalen Dateisystem ausgeführt - und entsprechend wird keine MP3-Datei abgespielt, da keine gefunden wurde.

              Du unterschätzt meine Fähigkeiten. Eine Ordner- und Dateistruktur lässt sich leicht extern nachbauen. Und es funktioniert doch bestens ;-)

              Das Problem scheint also bei dir zu liegen.

              Da liegt es gut und gammelt still vor sich hin ;-)
              Allerdings war der Ausgangspunkt, dass du mit den Pfadangaben bei deinem EMFF Probleme hast, ich habe mit meinen Flash-Anwendungen keine derartigen Probleme.

              Ich _möchte_ ja gerade das (eventuell fehlerhafte) Verhalten von einigen Browsern provozieren, um herauszufinden, welcher Browser daneben liegt.
              Mir geht es dabei nicht um den direkten Aufruf der Datei "TestURIs.swf" - dieser dient nur dazu, um zu demonstrieren, dass hier eine andere MP3 abgespielt wird als wenn man die Webseite test.html aufruft.

              Ein solcher Test wäre aber mit korrekten Dateien aussagekräftiger. Jetzt kannst du doch nie wissen, ob eine Fehlfunktion durch deine Dateien und Aufrufmethoden oder durch die Browser verursacht wird.

              Entscheidend für mich ist das, was beim Aufruf der Datei "test.html" passiert - und bei welcher Browser- und Plugin-Version _eben nicht_ "sound/sound.mp3" abgespielt wird, sondern z. B. "swf/sound/sound.mp3" oder eventuell sogar gar nichts.

              Das scheint mir überhaupt nicht von den Browsern abhängig zu sein, sondern ausschliesslich vom richtigen Handhaben der relativen Pfade in deinen Dateien. Eine andere Frage ist allerdings, ob alle Browser-Plugins mit diesen relativen Pfaden zurecht kommen. In deinem Beispiel scheint dies beim Firefox nicht der Fall zu sein. Wobei in meinem externen Test deine "TextURIs.swf" auch im Firefox funktioniert. Es scheint also noch andere Ursachen zu geben.

              Mir erschliesst sich der Sinn und die Funktion dieser "TestURIs.swf" nicht so richtig. Die weist doch dem Flash-Objekt nur den Pfad zu, der einfacher direkt eingebunden werden könnte. Ich könnte mir vorstellen, dass es im Firefox ein Timing-Problem gibt, weil der Aufruf der Datei erfolgt, bevor das Flash-Objekt erstellt ist.

              Gibts eigentlich den Schnecken-Schröder noch? Gehört der zum Programm des SELF-Treffens?
              Wie soll ich das verstehen? ;-)

              Sag bloss, du studierst in Darmstadt und kennst den Schnecken-Schröder nicht.

              Beste Grüsse
              Richard

              1. Hallo Richard,

                da das Ganze jetzt doch etwas unmissverständlich wird, noch Mal von vorne (jetzt einfacher):

                1. Die Datei "test.html" aufrufen.

                2. Ist nichts zu hören,
                    a) ist das Flash Plugin im jeweils verwendeten Browser nicht installiert oder aktiviert (dann bitte nachinstallieren bzw. aktivieren)
                    b) ist der Browser entsprechend eingestellt (Dateityp-Einstellungen? Erweiterungen? Sicherheitseinstellungen?)
                    c) sind die Boxen ausgeschaltet.

                3. Ist etwas zu hören, sollte dies eine schöne Stimme (SCNR) sein, die entweder etwas von einer Datei "sound/sound.mp3" oder "swf/sound/sound.mp3" erzählt.

                4. Das würde ich gerne wissen. Mit den aktuellen Browsern (und dem aktuellsten Flash Plugin), die ich getestet habe, ist stets "sound/sound.mp3" zu hören. Sollte jemand (beim Aufruf der test.html!) die andere Datei hören, so haben wir die schuldige Browser-Version bzw. schuldige Plugin-Version gefunden. :-)

                Gibts eigentlich den Schnecken-Schröder noch? Gehört der zum Programm des SELF-Treffens?
                Wie soll ich das verstehen? ;-)

                Sag bloss, du studierst in Darmstadt und kennst den Schnecken-Schröder nicht.

                Ich kenne ihn wirklich nicht. Er liegt auch nicht unmittelbar in Darmstadt-City, sondern außerhalb (Grube Messel). Ist also nicht unnormal dass ich den noch nicht kenne. ;-)
                Aber er wird vermutlich nicht auf dem "offiziellen" Programm des SELF-Treffens stehen - da habe ich mittlerweile einige schöne andere sehenswürdige Punkte gefunden... :-)

                Grüße

                Marc Reichelt || http://www.marcreichelt.de/

                --
                Linux is like a wigwam - no windows, no gates and an Apache inside!
                Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)