| |||||||
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 - Part II Das ist Part II zum Tutorial MP3-Player mit XML-Fütterungszeit - Part II hier geht's zu Part I MP3-Player mit XML-Fütterungszeit - Part II Inhalt 0. Einleitung 1. Zeitanzeige 1.1. Digitale Zeitanzeige 1.2. Visuelle "Balken-Zeitanzeige" + Ladestatus der Mp3 1.2.1. wichtiges für's Layout 1.2.2. Script für Balken und Pointer 1.2.2.1. Preloader 1.2.2.2. Pointer 1.2.2.2.1. Vorarbeit (Bitrate der Mp3s) 1.2.2.2.2. XML update 1.2.2.2.3. Das Pointer-Script 1.2.2.3. fertiger Prototype 2. Lautstärkeregulierung 2.1. Vorüberlegungen und Umsetzung 2.2. neuer fertiger Prototype 3. fertiges Script 4. Ausleitung 0. Einleitung Da jetzt doch schon ein paar mal nach der Zeitanzeige gefragt wurde, habe ich mich doch überwunden einen zweiten Teil des "MP3-Players mit XML-Fütterungszeit" zu schreiben! Ich hab dann direkt noch die Lautstärkeregulierung mit erklärt. Ich hoffe, dass sich der Aufwand gelohnt hat und ihr das gebrauchen könnt!!! In diesem Teil werden oben genannte Themen behandelt. 1. Zeitanzeige generell kommen wir an die Soundposition in Millisekunden mit SoundObjekt.position. Soundobjekt.duration gibt uns die Soundlänge aus (soundobjekt.duration sollte man allerdings nicht im Zusammenhang mit gestreamten Sounds verwenden, da es uns nur die Länge des schon geladenen Teils ausgibt und man somit falsche Werte bekommen würde!)! Zunächst einmal nur Soundobjekt.position, Die Länge kriegen Wir anders raus ...dazu später mehr !1.1. Digitale Zeitanzeige Als erstes benötigen wir ein dynamisches Textfeld, in dem wir die Zeit ausgeben werden! Dem textfeld habe ich mal den Instanznamen "zeit_anz" gegeben! Als nächstes müssen wir uns überlegen, wo wir es am geschicktesten unterbringen, die Zeitanzeige zu generieren! Dazu fragen wir uns am besten, wann wir sie überhaupt benötigen! Ich bin zu dem Schluss gekommen, dass wir sie erst benötigen, wenn der Sound abgespielt wird.. ansonsten ist sie zunächst einmal "00:00". Das schreiben wir auch einfach in unser Textfeld rein! Wenn wir uns an das Script aus Part I erinnern, dann wissen wir, dass dort bereits eine Abfrage genutzt wurde, um zu überprüfen, ob der Sound abgespielt wird (...bzw. ob die _soundbufftime geladen wurde). Wenn das der Fall ist, können wir unsere Anzeige starten lassen! Im script befinden wir uns also im MovieClip.prototype.song_starten und dort im onEnterFrame ereignis in dem oben Genanntes abgefragt wird. Wie aber generieren wir die Zeitanzeige? Das Soundobjekt befindet sich in dem Mc, auf den später der Prototyp angewand wird, also heißt es "this.sound_obj". An die aktuelle Position koommen wir also mit "this.sound_obj.position". Wir wollen uns die Zeit nicht genauer als auf die Sekunde ausgeben lassen, daher reicht ein SetInterval, indem wir die Zeitanzeige genereieren, mit einem Interval von 1000 Millisekunden (=1 sek) aus. ActionScript:
wie ihr seht habe ich direkt reingeschrieben, wie unsere funktion heißen wird: "zeit". Also gehen wir's an. zunächst das Allgemeine, um eine function zu deklarieren: ActionScript:
Als Paramter geben wir ihr das Soundobjekt mit. Mit einem trace(sound_obj.poition können wir uns schon einmal die Millisekunden der Soundposition ausgeben lassen: ActionScript:
Jetzt wollen wir uns aber die Soundposition nicht ausgeben lassen, sondern in das Textfeld schreiben: ActionScript:
Nur das was wir nun sehen ist ja in keinsterweise zufriedenstellend.. oder? ![]() Wir wollen die Zeitanzeige natürlich nicht in Millisekunden, sondern als eine schön formatierte Minuten und Sekunden Anzeige! Dazu sind ein paar Schritte nötig. Als erstes würde ich sagen, speichern wir unsere Anzeige mal in der Variablen "time" und teilen die Position durch 1000 um die Sekunden zu erhalten: ActionScript:
So, nun kommt der wesentliche Schritt bei der Anzeige! Wir wollen unsere in Sekunden vorligende Zeit in Minuten und Sekunden (bis 59, dann wieder 0) aufsplitten! Um die Minuten zu berechnen, können wir einfach schauen wie oft die 60 (60Sek.==1Min.^^) in unsere Sekunden passt! Um keine Kommazahlen angezeigt zu bekommen, runden wir das Ergebnis ab mit Math.floor(wert); also: ActionScript:
Die eigentliche Sekunden haben wir ja schon... aber jetzt wollen wir nicht die schon abgespielten Sekunden insgesamt, sondern nur die Sekunden der aktuellen Minute (also die Anzeige soll immer von 0 bis 59 laufen und wieder vorne anfangen!) Diese Sekunden zu berechnen ist uns möglich mit dem sogenannten Modulo: x % y Diese Operation gibt den Rest der Division von x/y aus! Wenn wir nun also unsere Sekunden durch 60 teilen, bleibt meist ein Rest übrig... die Sekunden. Bsp.: Wenn Sekunde 80 sind und wir nun 80%60 rechnen, erhalten wir 20 (die 60 passt 1 mal in die 80; der Rest ist 20 (80-60*1)) Wenn Sekunde 169 sind und wir nun 169%60 rechnen, erhalten wir 49 (die 60 passt 2 mal in die 169; der Rest ist 49 (169-60*2)) wenn wir dieses Wissen also auf unsere Zeitanzeige anwenden und auch diesen Wert abrunden, würde das so aussehen: ActionScript:
Eine sache fehlt bei den Sekunden allerdings und ist euch bestimt auch schon aufgefallen: Wenn die Sekunden unter 10 liegen, dann sollte die Anzeige natürlich z.b. so aussehen: 05 also benötigen wir für die sekunden noch mal eine Abfrage und hängen ggf. die 0 vorne dran: ActionScript:
ActionScript:
ActionScript:
ActionScript:
ActionScript:
ActionScript:
Das war es eigentlich schon, bis auf, dass wir nun noch beim Stoppen der Wiedergabe auch das Interval wieder löschen können. Wir können es übrigens auch bei den anderen buttons machen, da es neu angelegt wird, sobald der sound wieder anfängt zu spielen! Wir Löschen das Interval mit: clearInterval(zeit_interval); ...und dann setzen wir noch die Textfeldanzeige zurück auf "00:00". Unsere Button-functions sehen nun so aus: 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 (08-02-2005 um 03:39 Uhr) |
| | |
| | #2 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
|
Einen Fall haben wir noch nicht berücksichtigt. Und zwar den normalsten^^. Wenn ein Sound einfach bis zum Ende abgespielt wird, müssen wir die Zeitanzeige natürlich auch resetten und das Interval löschen, da es beim starten des nächsten Songs wieder erstellt wird: ActionScript:
Das wird nun leider noch überhaupt nicht funktinoieren wie ihr wahrscheinlich schon gemerkt habt, wenn ihr das mal getestet habt: Wenn man z.b. btn_next klickt wird die Zeitanzeige zwar kurz zurückgesetzt, aber dann geht die Anzeige dort weiter, wo sie vorher stehen geblieben ist! Um das zu vermeiden müssen wir das SoundObjekt löschen und wieder neu erstellen! Das machen wir im Prototypen direkt am anfang. Wir gucken ob ein SoundObjekt existiert und wenn ja, dann löschen wir es. Danach erstellen wir es dann wieder neu: ActionScript:
ActionScript:
Wenn ihr das jetzt einmal testet werdet ihr feststellen, dass nun zwar die Anzeige funktinoiert, aber sobald man z.b. btn_next oder btn_play drückt ein weiterer Song anfängt zu spielen ohne, dass der alte aufhört... Das liegt daran, dass wir das SoundObjekt löschen, aber den Sound vorher nicht stoppen! Deswegen werden wir das auch noch kurz machen: ActionScript:
Nun sollte die Anzeige korrekt funktionieren! ![]() 1.2. Visuelle "Balken-Zeitanzeige" + Ladestatus der Mp3 Der Ladestatus ist ein normaler Preloader. Für die Zeitanzeige benutzen wir einen kleinen senkrechten Strich, der auf dem Preloader wandelt... Also gehen wir's an... 1.2.1. wichtiges für's Layout Wir malen einen Balken auf die Bühne (ohne Rand). Meiner ist 250 lang und 12 hoch. Dann drücken wir F8 und wandeln das Shape in einen Movieclip um! Ich habe ihm den Instanznamen "balken" gegeben um später im Script auf diesen zugreifen zu können! Wichtig ist, dass das balken-Shape im Mc "balken" den x wert 0 hat.. also auf x=0 ausgerichtet wird! Nun malen wir den Rahmen für den balken auf einer höheren Ebene, sodass man später sehen kann, wieviel überhaupt geladen werden muss, wenn man keine weitere Text-Preloaderanzeige hat Das ganze (mc:"balken" und das Rahmenshape) packen wir wieder in einen mc (F8). Diesem mc habe ich den Instanznamen "anz_balken" gegeben. Wechselt in diesen (doppelklick) und malt auf einer neuen Ebene, am besten zwischen Balken und Rahmen, einen kleinen Senkrechten Strich über den Preloader, wandelt diesen dann wieder in einen mc um (F8) und gebt ihm den Instanznamen "pointer". Es ist wichtig, dass wir nun unsere ganzen Elemente in dem anz_balken auf x=0 setzen! Und als letztes ehe wir uns dem Script zuwenden: den Mc "balken" auf breite:1 skalieren. (Man sollte nun einen leeren Rahmen sehen, der bei x=0 liegt.) Wechselt wieder in die Hauptzeitleiste und positioniert den Rahmen (und somit auch die darin enthaltenen Elemente) neu. 1.2.2. Script für Balken und Pointer Zunächst wieder die Frage wo wir unser Script sinnvoll unterbringen können. Die Anzeige für den Preloader muss gestartet werden sobald ein Sound gestartet wird. Also können wir dies direkt in unserem "song_starten" Prototypen machen. Der Pointer muss, genau wie die Zeitanzeige im Textfeld, erst starten, wenn die _soundbufftime geladen wurde. Also kommt das Script auch in den prototypen, allerdings dorthin, wo auch das zeit_interval gestartet wird! 1.2.2.1. Preloader Den Preloader können wir ganz einfach über die scale-Eigenschaft vergrößern. Da die Scaleeigenschaft prozentual ist, berechnen wir den prozentualen Teil, der vom Sound schon geladen wurde und skalieren den balken dem entsprechend. Da wir das ständig und nicht nur ein einziges mal tuen müssen, machen wir das in einem OnEnterFrame. Wir benutzen dazu den anz_balken mc! Um aus dem Prototypen auf diesen zuzugreifen müssen wir zunächst eine Instanz höher (this._parent) und können dort dann den Mc ansprechen und ihm ein OnEnterFrame zuweisen: ActionScript:
So können wir dann aber die schon geladenen und die Totalen Bytes unseres Sounds auslesen: ActionScript:
)ActionScript:
Sobald die geladenen Bytes größer oder gelcih den Totalen sind, können wir das onEnterFrame Ereignis wieder löschen, sodass das vollständige onEnterFrame so aussieht: ActionScript:
Das wars schon! ![]() Als nächstes müssen wir noch den Pointer bewegen. 1.2.2.2. Pointer Der Pointer soll die aktuelle abspiel Position des Songs anzeigen, indem er sich auf dem "preloader" bewegt! Wir werden auf jedenfall die genaue Länge unserer Mp3s brauchen.. das schon mal vorweg! Leider bekommen wir diese nicht so einfach, weil sound_obj.duration ja nur die Länge des schon geladenen Sounds hergibt. Daher können wir die duration eigenschaft nicht nutzen.
__________________ 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 (09-02-2005 um 02:57 Uhr) |
| | |
| | #3 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| 1.2.2.2.1. Vorarbeit (Bitrate der Mp3s) Um die Soundlänge zu erhalten, müssen wir uns kurz von action scipt verabschieden und in PHP weitermachen! Ich habe grad mal nen kleines Script geschrieben, dass die Dateien eines Ordners durchsucht und ggf. die Bitrate der Mp3s in dem Ordner ausgibt! Zudem gibt die datei des direkt in xml-form aus, sodass man nur noch den namen anpassen muss. Falls ihr kein PHP - webspace habt ist das nicht schlimm! Dann müsst ihr eure Bitrates eben selber nachgucken! Das soll nur als kleines Hilfsmittel nutzen! Leute mit PHP-Webspace können sich das auch umschreiben und die Datei direkt von Flash aus aufrufen um dann die bitrate weiterzuverarbeiten! Ich gehe nicht weiter auf das PHP Script ein weil das hier kein PHP tut werden soll. habe es nur für die die's interessiert mal auskommentiert. Bei fragen stehe ich dennoch zur verfügung! Und nicht wundern wenn das dingen mal fehler ausspuckt... ich hab das wirklich nur kurz geschrieben ohne großartige !"Falsche Benutzereingaben" abzufangen usw.. Legt es einfach auf euren server und gebt den entsprechenden Pfad zu eruem Ordner mit den Songs (MP3s) an. Wenn ihr die Datei in den selben Ordner legt, wo auch die main.swf des Mp3 players später aufgerufen wird, könnt ihr die XML strings die ihr rausbekommt direkt verwenden. Wenn nicht, dann müsst ihr die pfade anpassen! Ihr könnt die Datei aber auch einfach benutzen um nur kurz die Bitrates auszulesen und sie dann per Hand in eure vorhandene XML datei reinschreiben! Hier mal das Script (Datei ist auch im Anhang )PHP-Code: Jedenfalls erweitern wir unsere XML datei um ein attribute "bitrate", sodass sie z.b. so aussehen könnte: Code: <?xml version='1.0' encoding='utf-8'?>
<songs>
<song name="Lied1" file="songs/lied1.mp3" bitrate="128"/>
<song name="Lied2" file="songs/lied2.mp3" bitrate="128"/>
</songs> ActionScript:
1.2.2.2.3. Das Pointer-Script Nach diesem Stück vorarbeit wirds jetzt aber wirklich Zeit, dass wir unseren Pointer bewegen! Als erstest weisen wir dem Pointer mc im anz_balken mc ein onEnterFrame zu. Um den mc an zu sprechen , müssen wir im prototypen zunächst eine Instanz höher und dort dann in den mc anz_balken, wo dann unser pointer mc liegt: ActionScript:
Die Prozentuale Abspielposition müssen wir nun rauskriegen, um unseren Pointer dann wiederrum prozentual gesehen zum balken zu positionieren.... Hört sich kompliziert an.. is aber immernoch Prrozentrechnung aus Klasse 7 ^^ Die absolute Abspielposition kriegen wir wieder mit sound_obj.position. Um die Sekunden anstatt die Millisekunden zu bekommen, teilen wir durch 1000: ActionScript:
Die gesamte Länge des Sounds bekommen wir mit Hilfe der Bitrate raus. Bitrate bedeutet, dass pro Sekunde, z.b. bei einer Bitrate von 128, 128 Bits pro sekunde abgespielt werden. Als erstes teilen wir daher die Bitrate durch 8 um die KiloBytes/s statt den KiloBits/s zu bekommen (8Bits == 1Byte). Die Bitrate des aktuellen Songs steht im globalen Array, welches wir ja in der songlist.onLoad function erstellt haben: bitrates[song_nr] (wir erinnern uns an Part I des Tutorials: song_nr istr eine globale variable, in der die Aktuelle Song-id gespeichert wird): ActionScript:
ActionScript:
Die Gesamte Größe geteilt durch die Abspielrate = Länge des Sounds. [off topic] OK ich weiß, dass ist nicht soooo leicht zu verstehen... (aber ich sag euch: es ist auch nicht leicht das zu erklären^^ )Ich hoffe ich ihr habt das verstanden, ansonsten vielleicht diesen Abschnitt nocheinmal lesen. Im Grunde ist es ziemlich Simpel! Falls ihr es dann immernoch nicht versteht, dann nehmt es einfach so hin! Es stimmt jedenfalls! [/off topic]
__________________ 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 |
| | |
| | #4 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
|
weiter im text: In Action Scipt sähe das nun so aus: ActionScript:
"this._parent._parent.sound_mc.sound_obj" schreiben möchte, lege ich mal eine referenz dahin... d.h. ich speichere so zu sagen den Pfad zum SoundObjekt in einer Variablen: ActionScript:
ActionScript:
Letztes Jahr noch, habe ich einfach getrickst und einfach 3 abgezogen... Ich habe nun aber durch Zufall herausgefunden, dass wenn man statt den 1024 Bytes, bei der Umrechnung der TotalenBytes ins KiloBytes, 1000 nimmt, es genau hinkommt! Nehmen wir das einfach mal so hin und verwenden es mit TotalBytes/1000. ![]() Das reicht jetzt aber auch noch nicht, um den Pointer zu bewegen. Wie gesagt müssen wir jetzt die prozentuale Abspielposition rauskriegen. Das machen wir wie bei nem Preloader oder halt wie in Klasse 7 mit den Zinsen: ActionScript:
Das machen wir indem wir unsere Prozentrechnung umdrehen und die Länge des Balkens als 100% ansehen (this._parent.balken._width/100). das ganze dann multipliziert mit der prozentualen Abspielposition die wir zuvor ausgerechnet haben ergibt nun endlich unsere _x Position für den Pointer: ActionScript:
1.2.2.3. fertiger Prototype Nach diesem Brocken sieht unser kommpletter Prototype so aus: ActionScript:
Nur noch eine Sache und wir sind fertig mit dem Pointer: Wenn der Stop button gedrückt wird, dann können wir das onEnterFrame ereignis des pointers löschen, da die Position bzw. die Abspielposition sich ja nicht merh verändert: 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 (09-02-2005 um 02:59 Uhr) |
| | |
| | #5 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| 2. Lautstärkeregulierung Für eine Lautstärkeregulierung sind eigentlich nur wenige Schritte notwendig, welche auch nicht schwer verständlich sein sollten da sie recht simpel sind: 2.1. Vorüberlegungen und Umsetzung Ähnlich wie bei der Zeitanzeige und dem ladestatus ist es wichtig, dass wir hier unsere Elemente intern auf _x=0 ausrichten! Da das ganze natürlich auch auf der y-Achse funktioniert, mache ich das nun mal dieser y, da wir unseren Preloader und die visuelle Abspielposition schon auf der x-Achse realisiert haben (natürlich auch auf anderen.. oder im Kreis... aber das würde jetzt wirklich den Rahmen sprengen..^^.. wer's machen will sollte mal nach sin und cos suchen und später seine Ergebnisse posten!) Es ist also egal auf welchem x Wert die Objekte liegen, aber wichtig, dass die Objekte den y Wert 0 haben. Als erstes malen wir mal ein schönes Bildchen, dass später der Hintergrund vom Lautstärkeregler sein soll Ich habe einfach ein Shape gemalt, dass von unten nach oben immer breiter wird. Dazu habe ich einfach Ein Rechteck gemalt und dann mit dem ganz normalen Pfeilwerkzeug (v) auf die untere rechte Ecke geklickt und sie zur unteren linken Ecke "gedragt" (gezogen). Die Maße sind egal und ihr könnt natürlich auch viel aufwendigere Bilder verwenden.. aber das hier ist ja kein Design Tutorial sondern ein ActionScript Tutorial.. deswegen gehe ich auch nicht auf irgendwelche derartigen Sachen weiter ein! Also nachdem Ihr euer Shape habt, selektiert ihr es und wandelt es in einen MovieClip um (F8). ich habe ihm den Instanznamen "laut" gegeben. Als nächstes malt ihr euren Regler, den Ihr später ziehen könnt, um damit die Soundlautstärke zu regulieren. Makiert diesen wieder und wandelt ihn in einen Mc (F8). Ich hab diesem den Instanznamen "pegel" gegeben. Makiert die beiden Elemente und drückt wieder F8 um diese wieder in einen Mc zu verwandeln. Diesem habe ich den Instanznamen "vol" gegeben. Doppelklickt auf den Mc um ihn in zu wechseln. Jetzt müüsst ohr die Objekte wieder auf _y=0 ausrichten, damit dasd Script später überhaupt funktionieren kann! Ich habe meinen pegel mc ganz oben vom laut mc positioniert (also beide auf y=0) da die Lautstärke am Anfang 100 sein wird. Jetzt können wir uns um das Script kümmern. Generell kann man die aktuelle Lautstärke eines SoundObjekeass mit sound_obj.getVolume() auslesen und mit sound_obj.setVolume(Wert) verändern. Wo fangen wir an... genau im Prototypen...warum?... genau... weil dort ein Sound gestartet wird und sobald ein Sound gestartet wird, kann man auch dessen Lautstärke ändern! Drag & Drop sollte bekannt sein, falls nicht: Drag=Ziehen Drop= fallenlassen. Das meint im Endeffekt einfach, dass man einen Gegenstand durch die gegenzieht indem man mit der Maustaste auf ihn klickt, die maustaste gedrückt hält während man die maus umherbewegt und man das Objekt wieder loslässt bzw. fallen lässt wenn man die Maustaste loslässt! In Flash gibt es nun 2 wichtige Ereignisse: ActionScript:
Diesen Ereiggnisen kann man functions zuweisen (genau wie dem onEnterFrame) die Ausgeführt werden, sobald das entsprechende Ereignis eintrifft! Sas machen wir auch direkt. Und zwar dort wo wir auch das onEnterFrame Ereigniss zuweisen, sodass wir 3 Funktionen für den Pegel mc haben: ActionScript:
startDrag(); und stopDrag(); Die Funktionsnamen sagen ja bereits was passiert. startDrag(ziel,[einrasten ,links ,oben ,rechts,unten]) Was die Parameter alles bewirken, könnt Ihr in der Flash internen Referenz nachlesen. Wenn ihr das getan habt dann könnt ihr beruhigt weiter lesen ![]() Unser "ziel" ist der pegel Mc, wir wollen, dass er einrastet (da er sonst komisch springen wird.. und das können wir hier net so gut gebrauchen ) und die begrenzungen nehmen wir von unserem Mc "laut".Die Begrenzungen vertikal (oben/unten) setzen wir abhängig von dem _y wert der Höhe des "laut" Mcs und die horizontale (links/rechts) Bewegung lassen wir erst gar nicht zu, indem wir hier zweimal den selben Parameter übergeben (nämlich den _x Wert des "pegel"s) Da wir wissen, dass der _y Wert vom laut mc 0 ist, können wir für auch einfach eine 0 einsetzen. Wir starten den Drag also im onPress Ereignis so: ActionScript:
ActionScript:
Das Soundobjekt liegt zwei Instanzen höher (this._parent._parent) und dort dann im mc sound_mc: ActionScript:
diesen müssen wir nun wieder ausrechnen. Vorüberlegung: Wenn der pegel mc auf y=0 liegt ist die Lautstärke 100. Wenn man den "pegel" jetzt runter zieht, soll der Sound leiser werden, bis er schließlich 0 ist. Der y-Wert vom "pegel" mc wird aber immer größer. Wenn der pegel mc auf y=xxx liegt ist die Lautstärke 0. y=xxx... geht natürlich nicht! Die Lautstärke ist natürlich 0, wenn der "pegel" mc auf der maximalen _y Position ist, die durch das startDrag(...) bei dem unterem Punkt vom "laut" mc liegt (laut._height) Soooo. Wie verarbeiten wir das jetzt? Zunächst mal müssen wir wieder mit Prozenten rechnen, da die maximale Lautstärke 100 ist (man kann sie auch höher setzen, aber das hört sich dann nicht mehr so doll an...) Wir drücken also erst mal die y Position des "pegel" mcs bezüglich des "laut" mcs prozentual aus. Dazu teilen wir die tatsächliche y Position durch die maximale und mutliplizieren dann noch mit 100: ActionScript:
Deswegen ziehen wir den Wert einfach von 100 ab um die Funktion zu invertieren und erhalten somit unseren Wert, den wir benutzen können: ActionScript:
ActionScript:
Das Textfeld könntet ihr einfach mit draggen um es immer neben dem "pegel"mc laufen zu lassen usw... der Grundbaustein ist geschafft und wenn ihr es verstanden habt sollte das Alles keine Probleme mehr bereiten !
__________________ 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 |
| | |
| | #6 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| 2.2. neuer fertiger Prototype Der neue fertige Prototype sieht jetzt so aus: ActionScript:
3. fertiges Script Jetzt sind wir schon am Ende von Part II des Tutorials. Das gesamte Script zur Steuerung sieht jetzt so aus :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 (09-02-2005 um 03:01 Uhr) |
| | |
| | #7 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
| 4. Ausleitung Endlich ist also Part II fertig. Das war mit Abstand das längste Tutorial was ich bis jetzt geschrieben habe....! Ich brauche nun echt mal ne Pause.. keine Ahnung wie lange ich jetzt daran gesessen habe! Ich hoffe mal ihr könnt das irgendwie gebrauchen. Wie auch in Part I muss ich aber leider Anmerken, dass es vorkommen kann, dass auf Grund der Länge des Tutorials hier und da der ein oder andere Fehler passiert ist, da ich unten was geändert habe und es oben vergessen habe oder so... ich hoffe, dass es nicht passiert ist. Wenn doch, dann schreibt es bitte, falls ihr es merkt, damit Andere nicht weiter verwirrt werden. Lob, Anmerkungen, Verbesserungsvorschläge und konstruktive Kritik ist natürlich, wie immer, erwünscht! ![]() Wenn noch irgendwelche Fragen unbeantwortet geblieben sein sollten oder irgendwas im Tutorial nicht ganz klar wurde, dann fragt einfach! So weit so gut! Die zum Tutorial gehörenden Dateien findet ihr im Anhang! Angucken mit freundlichen Grüßen, Robert
__________________ 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:43 Uhr) |
| | |
| | #8 (permalink) |
| Rc-freak Registriert seit: Sep 2004 Ort: Steiermark (Ö)
Beiträge: 1.152
|
ich weiß nicht was da jetzt genau nicht funktioniert! , bin grad erst beim preloader, aber sollte der nicht schon funktionieren?also bin vor dem pointer, aber es tut sich einfach nichts bei mir! So schaut zur zeit mein script aus, oder muss ich da zuerst das andere machen damit da mal der balken rüberfährt? ActionScript:
lg, Domsi
__________________ Für Rechtschreibfehler haftet meine Tastatur. Frühstücken tun alle (Nutella) http://www.dominik-klein.at|Einfache Flashanfängertuts|Geburtstagsreminder lg, Domsi |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Dec 2004
Beiträge: 31
|
ich liebe dieses tut!! eine anmerkung bzw. frage habe ich dennoch: ich hab den film getestet und bei der gelegenheit auch mal einen download simuliert und musste feststellen, dass bei ISDN (was es ja durchaus immernoch gibt) die mp3 schon mal ins schwitzen kommt, sprich sie "ruckelt". daher wollte ich den code so abändern, das die mp3 etwas später abgespielt wird. kann irgentjemand nen tipp geben wo und wie man sowas am besten realisieren würde?!? Gruß Daniel PS: pape for president |
| | |
| | #10 (permalink) |
| Flash-holic Registriert seit: Nov 2003 Ort: Neunkirchen(Saar)
Beiträge: 988
|
Weiß nich mehr genau, zumindest hatte ich es mal so gemacht, einfach ziemlich oben ActionScript:
__________________ Wer Großes versucht, ist bewunderswert, auch wenn er fällt. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) |
| | |
| | #11 (permalink) |
| - Registriert seit: Jan 2004
Beiträge: 3.002
|
@ domsi: du hast das Script für den Preloader in das onEnterFrame Ereignis des Prototypen gesetzt... das darfst du natürlich nicht.. so wie es bei dir da jetzt steht, wird der ladestatus erst angezeiget, wenn der Sound anfängt abzuspielen.. der soll aber ja direkt die ladeanzeige zeigen.. daher so: ActionScript:
@bestboy: so wie BAdBoYY gesagt hat sollte es gehen! Einfach direkt nach dem stop(); in der ersten Zeile des gesamten Scripts die _soundbufftime höher stellen! 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 |
| | |
| | #12 (permalink) |
| Rc-freak Registriert seit: Sep 2004 Ort: Steiermark (Ö)
Beiträge: 1.152
|
achso man blöd ja danke, jetzt funktz, is eigentlich fast logisch
__________________ Für Rechtschreibfehler haftet meine Tastatur. Frühstücken tun alle (Nutella) http://www.dominik-klein.at|Einfache Flashanfängertuts|Geburtstagsreminder lg, Domsi |
| | |
| | #13 (permalink) |
| Dr. Funk Registriert seit: Sep 2001
Beiträge: 136
|
hallo pape, ein ganz tolles tutorial, herzlichen glückwunsch dazu und vielen dank für deine mühe! ![]() ein problem habe ich aber beim ausprobieren festgestellt: PHP-Code: die werte für "var l" und "var t" bleiben 0, somit wird der balken nicht "gefüllt". das abspielen funktioniert hingegen einwandfrei, die datei wird also offensichtlich geladen. anscheinend erkennt flash die werte von getBytesLoaded() und getBytesTotal() erst, wenn das mp3 komplett runtergeladen im cache liegt.. PHP-Code: gibt es da vielleicht eine lösung für? ansonsten wie gesagt: top! ![]() (Nachtrag: Lokal funktioniert übrigens alles einwandfrei! Und ich habe den kompletten Player nicht im _root, sondern in einem MC in einem anderen Film integriert.)
__________________ HEITER WEITER q|_|@S|^^°^° Geändert von quasimono (08-02-2005 um 23:23 Uhr) |
| | |
| | #14 (permalink) |
| Rc-freak Registriert seit: Sep 2004 Ort: Steiermark (Ö)
Beiträge: 1.152
|
na ich weiß ich wollte das auch grad reinschreiben, bei mir muss auch ma im cach liegen, dann muss ich herumupfen aktualisieren wieder auf andere seiten usw. hat irgendwas edit: hier kann man sich das mal angucken: http://www.dominik-klein.at/test/mp3...mp3-player.swf
__________________ Für Rechtschreibfehler haftet meine Tastatur. Frühstücken tun alle (Nutella) http://www.dominik-klein.at|Einfache Flashanfängertuts|Geburtstagsreminder lg, Domsi Geändert von Domsi (08-02-2005 um 23:25 Uhr) |
| | |
| | #15 (permalink) |
| Flash-holic Registriert seit: Nov 2003 Ort: Neunkirchen(Saar)
Beiträge: 988
|
Sachen die ich komisch oder einfach unschön finde: Also: 1) Das var vor t und l Meiner Meinung anch kommt var nur vor neu deklarierungen und muss auch heutzutage nich mehr sein, also warum dann var davor? 2) Den _xscale nciht in einer else Also, ich find schöner wenns ActionScript:
__________________ Wer Großes versucht, ist bewunderswert, auch wenn er fällt. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |