| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| [TUTORIAL] MP3-Player mit XML-Fütterungszeit ;-)
Hallo! MP3-Player mit XML-Fütterungszeit Inhalt 0. Einleitung 1. First Steps 2. Die XML-file 3. XML-Datei in Flash einlesen 4. Die Playerfunktion 5. Der Preloader 6. Der erste Test 7. Die automatische Wiedergabeliste 8. Die Buttons 9. Das fertige ActionScript 10. Ausleitung 0. Einleitung: Da wieder mal die Frage aufkam, wie man in Flash einen Mp3Player baut und ihn mit XML-daten füttert und mein XML-Tutorial + weitere Threadangaben nicht so richtig halfen, dachte ich es wäre vielleicht sinnvoll, das ganze mal zusammen zu tragen. Es mag sein, dass Ähnliches schon da gewesen ist, aber eine Anleitung, wie man genau dieses Problem behandelt habe ich nicht gefunden! Ich habe das Problemchen noch etwas erweitert und einen Preloader eingebaut. Im nächsten Schritt (Part II... den es wahscheinlich eh nie geben wird...^^....mal schaun) könnte man ein Lauftext für die Anzeige, eine Liste mit vorhandenen Dateien, Regler für die Lautstärke usw.. einbinden! Lasst euch nicht abschrecken von der Länge des Tutorials! es wird zwar lang, aber dasheißt nur Arbeit für mich! Ihr könnt es (hoffentlich) sehr schnell lesen, da ich versucht habe es möglichst genau und dennoch leicht verständlich zu erklären! Ob das geklappt hat könnt ihr mir sehr gerne mitteilen, damit ich für die Zukunft bescheid weiß! Danke! ![]() Also viel Spaß & Erfolg!!! ![]() (ich werde unten nicht mehr jeden kleinen Schritt bezüglich der XML einlesung genaustens erklären! vorwissen wäre hier gut.. es reicht mein Tutoriasls über das Laden und verarbeiten von XML datein in Flash zu lesen. Dieses kann dort: [TUTORIAL] laden und verarbeiten von XML Dateien (basics) gefunden werden!) 1. First Steps: Als erstes benötigen wir einen neuen Flashfilm! Datei>neu Nun wollen wir uns zunächst kurz um die graphische Oberfläche kümmern, um uns dann an die Scripts zu geben! wir benötigen 4 Buttons: 1. "btn_play" 2. "btn_stop" 3. "btn_prev" 4. "btn_next" play spielt eine Soundfile ab, wenn schon eine am spielen ist, soll sie von vorne beginnen. stop stoppt die wiedergabe. prev soll die vorangehende Datei abspielen und next dementsprechend die folgende Datei! für den Play Button habe ich einen simplen dreieckspfeil gemalt, für stop ein viereck und für prev bzw. next doppelpfeile. dann benötigen wir noch ein dynamisches Textfeld, in welchem wir später den Songtitel anzeigen lassen! Wir nennen es "anz" Nun erstellen wir eine neue Ebene, nennen sie "AS" und schreiben folgendes: ActionScript:
2. Die XML-file: Als nächstes brauchen wir erst einmal eine XML datei und ein Script, welches uns die Dateien einliest! Also öffnet den edtior oder ein anderes Textprogramm und schreibt dort das als Grundstruktur rein: Code: <?xml version='1.0' encoding='utf-8'?> <songs> <song /> </songs> ..so wie es jetzt da steht genügt das natürlich nicht, da wir verscheidene Informationen über den Song benötigen: Wir brauchen den später anzuzeigenden Namen und die dazugehörige datei. Also geben wir jedem unserer Songs 2 attribute, sodass die XML datei z.b. so aussieht: Code: <?xml version='1.0' encoding='utf-8'?> <songs> <song name="Lied1" file="songs/lied1.mp3" /> <song name="Lied2" file="songs/lied2.mp3" /> </songs> 3. XML-Datei in Flash einlesen: Nun wenden wir uns dem Script in FLash wieder zu. wir benötigen ein XML Objekt: ActionScript:
ActionScript:
Wir wollen 2 Arrays (global, um von überall auf sie zugreifen zu können ohne die pfadsorgen!) erstellen, in denen wir unsere Daten aus der XML file speichern. Diese erstellen wir direkt in der onLoad funktion des XML objektes und füllen sie direkt(für weitere Erklärungen s. Tutorial einladen und verarbeiten von XML-dateien): ActionScript:
ActionScript:
so, um nun zu überprüfen, ob die Daten wirklich übergeben wurde, könnt ihr nun den Film starten! wenn keine Fehleranzeige in dem textfeld zusehen ist, dann hats geklappt... wirklich?.. ... naja.. zumindest sind keine Fehler aufgetreten beim laden, ob die daten jedoch wirklich reingeladen wurden und in den arrays gespeichert wurden, könnt ihr einfach mit einem Trace in der for schleife probieren, sodass der gesamte code bis hier in Flash so aussieht: ActionScript:
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II Geändert von pape (12-01-2005 um 22:57 Uhr) |
| | |
| | #2 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| 4. Die Playerfunktion: Da wir nun unsere Daten in Flash haben, können wir unsere Functions bezüglich des Mp3 Player "bauen". Zunächst einmal erstellen wir einen MovieClip, in dem wir unseren Sound legen werden: (das script kommt direkt hinter die for schleife.. ersetzt quasi jetzt das tarcen der Arrays) ActionScript:
Nun benötigen wir ein Sound Objekt, welches wir dem MovieClip unterordnen: ActionScript:
jetzt schreiben wir die function, die uns in unser Soundobjekt Die gewollte Datei lädt: Wir wollen der function 2 Parameter mitgeben: 1. die zuladene File 2. den Titel des Songs in ActionScript umgesetzt: ActionScript:
was muss diese function nun genau machen? zunächst lädt sie in unser Spundobjekt die datei; diese soll gestreamt werden: ActionScript:
das war es eigentlich schon. der erste Song wird abgespielt, sobald wir die function mit den entsprechenden Parametern aus dem Array aufrufen! 5. Der Preloader: Wir wollen aber noch weiter gehen und einen Preloader für den sound bauen und natürlich eine automatische Abarbeitung unserer XML liste. Zudem soll auch noch der Name der datei angezeigt werden... Der Preloader ist kein wirklicher Preloader...wir streamen die Datei ja schließlich. Das heißt, dass ein gewisser Teil in den Buffer geladen wird und dann wärend der Rest der Datei geladen wird, die Wiedergabe schon startet! Wieviel vorgeladen wird steht in der _soundbufftime. Diese ist standardgemäß auf 5 sekunden eingestellt und kann verändert werden (s. Flash-Referenzen). Wir belassen es einfach bei 5 sec. Wie nun aber können wir abfragen wann diese Bufftime geladen wurde? mit getBytesLoaded() und getBytesTotal(); können wir hier nichts wirklich anfangen... Nein, das ist viel einfacher als man denken mag: Jedes Soundobjekt besitzt die Eigenschaft "position". Sie gibt die aktuelle Abspielposition des Soundobjektes in Millisec. an. Wenn diese also größer als 0 ist, hat der Sound angefangen abzuspeieln! ActionScript:
Was eignet sich da besser als ein onEnterFrame Ereignis.. SOOO... an dieser Stelle müssen wir etwas ändern! (wir müssen nicht, aber es wird hilfreich!) Wir erinnern uns, dass wir unser Soundobjekt in einen extra Mc gelegt haben... genau... der dient jetzt für das onEnterFrame Ereignis! Um das ganze noch einfacher zu gestalten und nicht noch einen weiteren Parameter "sound_mc" für die function zu benötigen machen wir aus unserer function einen prototypen! Nach der Umwandlung sähe unsere derzeitige "function" so aus: (das sound objekt liegt in diesem mc, daher von nun an this.sound_obj, da "this" sich auf den Mc bezieht) ActionScript:
Sollte das der Fall sein, so können wir das onEnterFrame mit delete this.onEnterFrame wieder löschen. Das alles sieht dann bis jetzt so aus: ActionScript:
Also ergänzen wir die if-Abfrage im onEnterFrame mit einem else part: ActionScript:
wenn der Song nun gestartet ist können wir in das Textfeld den Songnamen schreiben. Das machen wir in dem wir unser trace("Der Song ist gestartet"); durch das ersetzen: ActionScript:
6. Der erste Test: Wenn ihr bis hierhin gekommen seid, habt ihr es verdient das ganze nun mal zu testen ob man überhaupt etwas hört! Sorgt dafür, dass die Pfad angaben in der XML-Datei wirklich stimmen! (oben im beispiel müsste ein Ordner namens "songs" existieren in dem die dateien "lied1.mp3" und "lied2.mp3" liegen. Der Ordner müsste im selben Verzeichniss wie die xml und die fla sein!) Aufgerufen wird der Prototype nun zum testen einfach mit dem ersten Song und zwar in der onLoad function (nachdem die Arrays in der for-Schleife gefüllt wurden, der sound_mc erstellt wurde und das sound Objekt erstellt wurde). Die nötigen Parameter stehen in unseren Arrays, sodass der Aufruf so aussieht: ActionScript:
und das komplette bisherige Script so: ActionScript:
Es sollte die Datei, auf die der erste XML-knoten verweist, abgespielt werden, wenn ihr den Film testet!
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II Geändert von pape (12-01-2005 um 22:44 Uhr) |
| | |
| | #3 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| 7. Die automatische Wiedergabeliste: Wie können wir jetzt eine automatische Wiedergabe der nächsten Knoten auch noch realisieren? das Soundobjekt hat eine Methode namens "onSoundComplete". Dieser Methode können wir eine function zuweisen, die ausgeführt werden soll, wenn der aktuelle Sound abgespielt wurde! Wir sollten zunächst aber überlegen was wir machen wollen, wenn der Sound abgespielt wird... Wir möchten den nächsten Sound abspielen! Dafür brauchen wir also eine Variable, die uns sagt, welche Song-Nummer momentan abgespielt wird. Ich nenne sie mal "song_nr" Wir deklarieren sie sobald die Arrays gefüllt wurden und das SoundObjekt erstellt wurde.. und zwar als globale Variable, sodass wir von überall auf sie zugreifen können. Wenn man sie auf 0 setzt, fängt man immer beim ersten Song an, man kann natürlich auch per random einen Zufalls wert nehmen: ActionScript:
wenn nun ein Song fertig abgespielt wurde, brauchen wir nur zu überprüfen, ob noch weitere Songs vorhanden sind oder ob wir von vorne anfangen müssen und ansonten brauchen wir die Variable nur immer eins hochzuzählen: wir erweitern demenstprechend den Prototypen: ActionScript:
ActionScript:
jetzt noch den nächsten Song starten mit ActionScript:
der Prototyp sieht also fertig so aus: ActionScript:
8. Die Buttons: Jetzt fehlen nur noch die Buttons! button play macht nichts weiter, als den Song der grade ausgewählt ist, also der song_nr entsprechend zu starten: ActionScript:
btn_stop stoppt die Wiedergabe: ActionScript:
Die function für btn_next ist mit der automatischen "nächster Song" function: onSoundComplete zu vergleichen: ActionScript:
ActionScript:
Anmerkung: Es sei bemerkt, dass wenn die Wiedergabe gestoppt wurde und man auf next oder prev klickt die Wiedergabe beginnt! das ist aber nicht schilmm und braucht nicht verhindert zu werden. wer klickt auf next, wenn er nicht die Soundwiedergabe aktivieren möchte?... (jaja.. es gibt auch solche... :rolleyes) Wie ihr seht, sind die Buttons das kleinste Problem, wenn man sich vorher ordentlich Gedanken gemacht hat!!! Das sollte man grundsätzlich versuchen zu erziehelen: erst denken, dann scripten/umsetzen! 9. Das fertige ActionScript: Das gesamte fertige ActionScript sollte nun so aussehen: ActionScript:
10. Ausleitung: So das wars auch schon! Wenn ihr alles richtig gemacht habt, dann solltet ihr jetzt, wie verpsrochen, einen funktionsfähigen Mp3Player haben, den ihr mit Xmldaten füttern könnt! Anmerkungen: Wenn ihr dieses script für eure Filme benutzen wollt, dann könnt ihr einfach eine datei anlegen, in der ihr den Player schreibt! Passt dann aber auf nur relative Pfade zu benutzen (ich habe oben mit _root gearbeitet.. dass solltet ihr dann vermeiden, wenn ihr die Datei in einen Movieclip eures Hauptfilmes laden wollt!). Im Anhang sind noch die zum Tutorial gehörigen Dateien! Damit Sie auch wirklich funktionieren, müsst ihr Die Xml-Datei so anpassen, dass die Pfade zu euren Mp3-Datein stimmen. noch was in eigener Sache: Ich hoffe, dass nirgendwo etwas unsinniges steht.. aber bei so langen Tutorials kann das leider schon mal vorkommen, dass man unten was ändert und es oben vergisst.. falls ihr so etwas entdeckt, so schreibt es bitte. danke! Mit freundlichen Grüßen, Robert P.s.: Ich freue mich immer über Feedback! mod edit: hier entlang gehts zu Part II: MP3-Player mit XML-Fütterungszeit - Part II
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II Geändert von salazar (30-07-2006 um 23:51 Uhr) Grund: kaputte files ersetzt |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Apr 2003
Beiträge: 644
|
HAMMER!!! Vielen dank, werde es mir morgen mal genauer anschauen und versuchen einen mp3 player damit zu bauen ![]() Achja, in deinem "noch was in eigener Sache" steht statt "dass" , "adss" und bisle dadrüber "erpsrochen", nene scherz, will net alles aufzählen, passt ja so, versteht man schon...mfg jonny Geändert von jonny-noob (12-01-2005 um 22:29 Uhr) |
| | |
| | #5 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
|
jo, bitte! Hab noch so ca. 20 Reschtchraibpfela korrigiert! grz pape
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II |
| | |
| | #9 (permalink) | |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| Zitat:
wenn du ihn verstehst, kannst du ihn auf andere Dinge anwenden! ... naja, danke für die Lobe ![]() grz pape
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II | |
| | |
| | #10 (permalink) |
| "flashe" Registriert seit: Nov 2004 Ort: Schweiz
Beiträge: 98
|
hi pape! schönes, tutorial, gut kommentiert, leicht verständlich, man sieht dass du verstehst wovon du schreibst. ich hab das ganze durchgearbeitet und funzt soweit, mit den buttons hab ich noch probleme aber das liegt wohl an der referenzierung, sollte kein problem sein. hm, mache mir noch gedanken über den einbau der zeitanzeige. wie gesagt, feine sache, danke für deine mühe, hat mir sehr geholfen chears mindprint
__________________ "Ein Leben ohne Musik wäre ein Irrtum" Das geht ab: Lambchop, BoardsofCanada |
| | |
| | #11 (permalink) | |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| Zitat:
das würde sie dir dann ausgeben: ActionScript:
mit der Länge wirds nen bisl schwieriger, weil die sounds gestreamt werden... Die deinSound.duration gibt nämlich nur die Länge des schon geladenen sounds zurück! man kann zwar die Länge berechnen, aber dafür muss man die Bitrate der Mp3 kennen. Wenn du das vorhaben solltest, dann such mal im Forum; Die dazugehörige Rechnung hab ich hier irgendwann mal gefunden. //edit: mp3 player streaming und ladestatus //edit end Man kann auch die Bitrate per PHP auslesen.. das wird aber recht "kompliziert"... dazu habe ich mal was bei tutorials.de im Flashbereich irgendwo gesehen.. einfach mal suchen. grz pape
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II Geändert von pape (15-01-2005 um 17:34 Uhr) | |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
|
super dieses tutorial! alles funktioniert! probleme bereitet mir jetzt noch die zeitanzeige. genauer gesagt, wieß ich nicht, wie ich an "deinsound" komme. ich bin mir zudem auch nicht sicher, wo ich das script positionieren soll. |
| | |
| | #14 (permalink) |
| experience++; Registriert seit: Jul 2002 Ort: Düsseldorf
Beiträge: 11.305
|
super! da haste dir aber viel mühe gegeben mit! respekt. cya, sal
__________________
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme! |
| | |
| | #15 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
|
schon mal eine Sache, die ich in dem Tutorial leider nicht beachtet habe :man muss das Sound-Objekt löschen, sobald man einen neuen Sound starten will, wenn man eine Zeitanzeige umsetzen möchte. Wenn man dies nicht tut, so läuft die Anzeige immer weiter und wird nicht wieder auf 00:00 gesetzt... das erkläre ich aber in Teil 2 des Tutorials, den es bald geben wird (...wenn ich genügend Zeit finde den zuende zu schreiben... angefangen habe ich schon!) bis dann, grz pape @salazar: hallo & thx!
__________________ mfG, Robert Tutorials: [TUTORIAL] XML-Files in Flash einlesen+weiter verarbeiten Steuerung zwischen Zeitleisten & Movieclips [TUTORIAL] MP3-Player (+XML) [TUTORIAL] MP3-Player (+XML) Part II |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
LinkBacks (?)
LinkBack zu diesem Thema: http://www.flashforum.de/forum/actionscript-1/tutorial-mp3-player-mit-xml-fuetterungszeit-154345.html | ||||
| Erstellt von | Für | Art | Datum | Hits |
| Kleiner Player in Flash | Dieses Thema | Refback | 25-11-2011 19:57 | 1 |
| Flash MP3-Player - Flash • Webdesign Forum | Dieses Thema | Refback | 26-08-2009 09:30 | 11 |