• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-03-2010, 10:55   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 48
Question swf-Dateien mit Flex abspielen

Hallo,

ich arbeite gerade an einer Air-Anwendung, die verschiedene Dateien (auch swf-Dateien) hintereinander abspielen soll.

Um das zu realisieren, habe ich einen SWFLoader (<mx:SWFLoader id="mySWF" height="100%" width="100%" autoLoad="false"/>) erstellt und diesem dann im Skript-Tag eine source zugewiesen und abspielen lassen. Das klappt auch alles beim ersten Film ganz gut - nur schaffe ich es nicht abzufragen wann die Datei beendet ist um die nächste zu starten.

Ich habe auch Einfluss auf die Gestaltung der swf-Dateien, könnte also am Ende etwas einfügen (lassen) ... aber was?

Ich moment werden die swf-Dateien über den command "quit" beendet ... nur wird dieser Befehl beim Abspielen der Datei in meiner Air-Anwendung einfach ignoriert und die swf-Datei läuft immer weiter ...

Ich bin also jetzt auf der Suche nach einer Lösung wie ich die swf-Dateien beenden kann und welches Ereignis ich dann dem EventListener meines SWF-Loaders zuordnen muss, um den nächsten Film zu starten.

Ich danke euch schon mal für eure Hilfe,

liebe Grüße!
QueenF ist offline   Mit Zitat antworten
Alt 26-03-2010, 11:56   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Nutz das Eventsystem, dispatche einen Event, wenn der Film beendet ist und fang den Event mit einem Listener ab.
  Mit Zitat antworten
Alt 26-03-2010, 12:10   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 48
Hallo und danke für die schnelle Antwort ...

Nur noch eine Frage - wie kann ich in meiner swf-Datei einen Event auslösen, der meine Air-Anwendung erreicht? Hast du dazu vielleicht ein kurzes Code-Beispiel zum besseren Verständnis oder einen Hinweis wo ich das nachlesen könnte?

Danke!
QueenF ist offline   Mit Zitat antworten
Alt 26-03-2010, 12:51   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
PHP-Code:
//in der swf
dispatchEvent(new Event("fertig"));

//in der App
mySWF.addEventListener("fertig",fertigHandler);
private function 
fertigHandler(event:Event):void
{
   
//hier der Code nach Beenden der SWF

  Mit Zitat antworten
Alt 26-03-2010, 13:58   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 48
Geht leider immer noch nicht!

Hallo und nochmals Danke für die schnelle Antwort.

Ich habe jetzt in der swf-Datei an der Stelle wo vorher der "quit"-Befehl stand dispatchEvent(new Event("endOfSwf")); eingefügt.

In der Air-Datei habe ich dann meinem SWFLoader (mySWF) den Listener: mySWF.addEventListener("endOfSwf", nextVideo); hinzugefügt.

Das Laden und Abspielen der swf-Dateien habe ich wie folgt realisiert:
mySWF.source = "test.swf";
mySWF.load(mySWF.source);

Die erste swf-Datei spielt auch ohne Probleme - jedoch bekommt die Air-Anwendung das Signal nicht. Ich habe in der Funktion nextVideo(), die vom EventListener aufgerufen werden müsste gleich zu Begin eine Ausgabe geschrieben - die wird jedoch nicht ausgeführt, er springt also gar nicht erst in die Funktion.

Hat Jemand eine Idee woran das liegen könnte?

Vielen Dank!
QueenF ist offline   Mit Zitat antworten
Alt 29-03-2010, 11:13   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 48
Hallo ... schon wieder ...

Ich bin mit meinem Problem leider immer noch nicht weiter gekommen. Habe mir jetzt eine kurze test-swf-Datei gebaut, in der einfach nur nach 5 Sekunden (also 125 Frames bei 25bps) der Event geworfen wird:

Code:
dispatchEvent(new Event("endOfSwf"));
trace ("endOfSwf");
stop();
Diese swf-Datei spiele ich in meiner Air-Anwendung ab:

Code:
if (dateiFormat != "swf")
    {
	myvideo.source = "test.mov";
	myvideo.addEventListener(VideoEvent.COMPLETE, nextVideo);
	myvideo.play();
    }
else
    {
	mySWF.source = "test.swf";
	mySWF.addEventListener("endOfSwf", nextVideo);
	mySWF.load(mySWF.source);
    }
Die Funktion nextVideo hat gleich zu Begin eine trace-Ausgabe, dann wird geprüft welches Dateiformat die nächste Datei hat (die Dateien werden mittels einer XML übergeben - was auch wunderbar funktioniert) und diese wird abgespielt. Im Falle von Video-Dateien funktioniert das auch einwandfrei, da ich über das COMPLETE-Event ohne Probleme abfragen kann wann das Video beendet ist. Bei den SWF-Dateien habe ich nur immer noch das Problem, dass das Event, welches ich in der swf-Datei auslöse nicht von der Air-Anwendung registriert wird. Ich sehe zwar die trace-Ausgabe meiner swf-Datei, aber meine Funktion nextVideo wird nie ausgelöst.

Ich habe nun mal geschaut, auf welche Events ich bei dem swf-Loader testen könnte ... da wären z.B. Event.unload, Event.removedFromStage, Event.removed, Event.deactivate, FlexEvent.Remove ... aber wie muss ich da meine swf-Datei beenden damit einer der Events ausgelöst wird?!?

Oder wenn das mit dem Zusammenspiel der Events gar nicht funktioniert - gibt es da vielleicht irgend eine Möglichkeit aus der abgespielten swf-Datei direkt auf die Funktion nextVideo() meiner Flex-Datei zuzugreifen und sie zu starten?

Ich würde mich sehr über einige Hinweise freuen ... komme echt nicht weiter und habe langsam keine Idee mehr.

Vielen Dank und liebe Grüße!
QueenF ist offline   Mit Zitat antworten
Alt 29-03-2010, 11:29   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du solltest dir für mySWF einen Complete-Event adden und erst in dessen Funktion den Customevent anhängen.
PHP-Code:
...
mySWF.addEventListener(Event.COMPLETE,completeHandler);
...
function 
completeHandler(event:Event):void
{
   
mySWF.removeEventListener(Event.COMPLETE,completeHandler);
   
mySWF.content.addEventListener("endOfSwf",endOfSwfHandler);
}
function 
endOfSwfHandler(event:Event):void
{
   
trace("endOfSwfHandler");

Und schau dir mal in der Flash-Hilfe die Infos zu Customevents an. Du kannst deine eigenen Eventklassen schreiben und denen zusätzliche Infos als Parameter mitgeben.
  Mit Zitat antworten
Alt 29-03-2010, 13:25   #8 (permalink)
Neuer User
 
Registriert seit: Mar 2010
Beiträge: 48
Vielen Dank für die Antwort - hat jetzt super funktioniert!
QueenF ist offline   Mit Zitat antworten
Alt 24-08-2010, 17:21   #9 (permalink)
Neuer User
 
Benutzerbild von striker1984
 
Registriert seit: May 2010
Beiträge: 8
Jetzt muss ich aber schon mal fragen (als ziemlich unerfahrener Flex-Programmierer), woher weiß ich denn wann der Film fertig abgespielt ist?

Oder anders gesagt, wo im Code soll ich den event dispatchen? Ich muss ja irgendwo ansetzen können...

Finde im Flex 4.1 Referenzhandbuch nur ereignisse, die anzeigen wann der Ladevorgang abgeschlossen ist. Ich will aber wissen wann die bytesLoaded=bytesTotal sind, also wann der swf-film fertig abgespielt ist!

mx.controls.SWFLoader - Adobe Flex 4.1-Referenzhandbuch

So dass ich danach z.B. einen anderen swf-film abspielen kann.

Ich weiß das es sich hier wahrscheinlich um ein Grundverständniss-Problem handelt, wäre trotzdem über Antworten sehr sehr dankbar!
striker1984 ist offline   Mit Zitat antworten
Alt 25-08-2010, 01:47   #10 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du kannst den Event doch dispatchen, wo du möchtest... Beispielsweise auf dem letzten Frame des nachgeladenen Films oder nach Abarbeiten der letzten Funktion etc.
  Mit Zitat antworten
Alt 25-08-2010, 12:52   #11 (permalink)
Neuer User
 
Benutzerbild von striker1984
 
Registriert seit: May 2010
Beiträge: 8
Ok, gibt es denn da einen speziellen Event? Hat hier vielleicht jemand ein Flex Beispiel dafür das ungefähr so beginnt ?

<mx:SWFLoader id="".....
striker1984 ist offline   Mit Zitat antworten
Alt 25-08-2010, 13:53   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
gibt es denn da einen speziellen Event?
Wozu? Du kannst dir doch ohne großen Aufwand eigene Events oder Eventklassen erstellen. Beispiele wurden in diesem Beitrag doch schon gezeigt. Einen weiteren Ansatz habe ich in diesem Thread veröffentlicht.
  Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
abspielen, ende, hintereinander, laden, swf

Themen-Optionen
Ansicht

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.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
FLEX... Flash abspielen in Flashplayer und nicht im Browser? mathiregister Flex allgemein 7 01-04-2010 10:17
[Flash CS3] swf-Dateien nacheinander abspielen -fabi- Flash Einsteiger 6 21-04-2009 10:48
swf-Dateien nacheinander abspielen switchstance ActionScript 3 1 22-05-2008 08:50
.swf-dateien ohne pc abspielen chrisdanny Flash MX 1 01-08-2004 13:32
Abspielen von MP3 Dateien - Loop dieter99 Flash 4 und Flash 5 3 04-08-2002 15:36


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele