Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-01-2004, 11:45   #1 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
Unhappy Sound-Zufallsgenerator-Wie geht das??

Hi!
Ich habe 6 verschiedene Soundloops, von denen einer die Hintergrundmusik zu meinem SWF sein soll. Bei jedem neuen Laden des SWF soll ein anderer der Sounds nach dem Zufallsprinzip geladen werden. (Ich habe einen einfachen Preloader drin, der den SWF abspielt, sobald alles geladen ist)

Weiß jemand von Euch, wie ich das am einfachsten mit AS hinkriege? (eine Beispieldatei wär klasse!)
Ich habe schon das FF-Archiv durchsucht, aber habe nichts vergleichbares gefunden ...

Vielen Dank im Voraus für jede Hilfe
fransi
fransi ist offline   Mit Zitat antworten
Alt 21-01-2004, 12:01   #2 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

ist eigentlich recht simpel:
wähle in der Bibliothek die Sounds aus, Rechtsklick, Verknüpfung und geben ihnen den Namen "bgsound1" bis "bgsound6" (or whatever you want).

Im ersten Frame schreibst du:
sndNum = random(6) + 1;
loop = new Sound();
loop.attachSound("bgsound"+sndNum);
loop.start(0,999);

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 21-01-2004, 12:16   #3 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
Danke bruda!
Werde es gleich mal ausprobieren. Was muß ich am Mac anstelle von "Rechtsklick/Verknüpfung" machen?
fransi ist offline   Mit Zitat antworten
Alt 21-01-2004, 12:36   #4 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
keine Ahnung
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 21-01-2004, 12:40   #5 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
Macht nix.
Habe es schon hinbekommen. Funktioniert 1A!!

1000 Dank
fransi
fransi ist offline   Mit Zitat antworten
Alt 22-01-2004, 11:47   #6 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
Jetzt ist doch noch ein neues Problem aufgetaucht:

Es hat sich herausgestellt, dass von 10 MP3-Files (jeder ca. 400k) einer per Zufall ausgewählt werden soll und dann bei dem Website-Intro, an dem ich gearde bastele als Bckground-Sound dienen soll.

Bei dieser Datenmenge kann ich das obige Script von ludabruda nicht mehr benutzen, da ja hier alle Sounddaten in den SWF mit eingebunden werden und dieser zu einem Riesenklotz aufgeblasen würde (ohnehin gab es da ein Problem, weil die Sounds immer VOR dem Preloader (1.Bild) geladen wurden)

Weiß jemand eine Möglichkeit, wie ich es hinbekomme, dass nur einer der Sounds per Zufall von EXTERN ausgewählt wird, bevor der eigentliche Clip beginnt???
Möglicherweise kann ich ja die 10 MP3-Sounds in 10 SWFs verpacken, von denen dann je einer per Zufall in meinen Hauptfilm geladen wird ...

Freue mich über jede Hilfe
fransi
fransi ist offline   Mit Zitat antworten
Alt 22-01-2004, 11:59   #7 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hi fransi,

hab da vielleicht einen Anhaltspunkt für dich:
ActionScript:
  1. //Songliste generieren:
  2. var numTracks =10;
  3. var tracklist = new Array();
  4. for (var i = 0; i <= numTracks - 1; i++) {
  5.     tracklist[i] = i + 1;
  6. }
  7. //Zufalls-Track auswaehlen:
  8. function randomTrack() {
  9.     if (tracklist.length > 0) {
  10.         var r = Math.floor(Math.random() * tracklist.length);
  11.         return "song" + tracklist.splice(r, 1) + ".mp3";
  12.     } else {
  13.         trace("Keine Songs mehr zu laden!");
  14.     }
  15. }
  16. //Soundobjekt instanzieren:
  17. var player = new Sound(this);
  18. //wenn Sound durch, naechster:
  19. player.onSoundComplete = function() {
  20.     this.loadSound(randomTrack());
  21. };
  22. //wenn Sound geladen, starten:
  23. player.onLoad = function(OK) {
  24.     if (OK) {
  25.         this.start(0, 0);
  26.     } else {
  27.         trace("Fehler beim Laden!");
  28.     }
  29. };
  30. //Sound laden:
  31. player.loadSound(randomTrack());
Das lädt dir per Zufall externe mp3's, die alle 1.mp3, 2.mp3, 3.mp3 usw. heißen müssen. Ein bereits geladener Sound fliegt raus, wird also nicht nochmal geladen, und wenn ein Sound durch is, wird der nächste geladen. Könntest du dir evtl. anpassen...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 22-01-2004, 12:40   #8 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
@sonar
Das sieht ganz vielversprechend aus, vielen Dank. - Ich werde mal versuchen, das anzupassen.
Ich überlege jedoch gerade angestrengt, an welche Stelle ich das ganze setze:
Ich habe am Anfang meines Filmes einen Preloader, der zwischen 2 Frames hin und herpendelt und schließlich an den bezeichneten anfang des Hauptfilms springt, wenn alles geladen ist.
Genau an diesem Marker soll dann auch die geladene MP3 einsetzen. Wo plaziere ich am besten dein Script? - Muß ich vielleicht noch eine Art zweiten (Sound-)Preloader einbauen, der den Ladevorgang beim MP3 überbrückt??

Fragen über Fragen
fransi
fransi ist offline   Mit Zitat antworten
Alt 22-01-2004, 12:55   #9 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Das Skript kannst im Prinzip in Frame 1 schmeissen. Es darf halt nicht mit in Schleife laufen. Ich habs auch nochmal umgeschrieben - der Sound startet jetzt nicht mehr automatisch, wenn geladen. Du müsstest ihn dann in deinem ersten Bild des "Hauptfilms" manuell starten: "player.start(0, 0);" Die zweite 0 is übrigens die Zahl der Wiederholungen des Sounds.

Probier mal ob das so reicht, also ob dein Preloader den Sound mit berücksichtigt.
ActionScript:
  1. var soundLoaded = false;
  2. var numTracks =10;
  3. var tracklist = new Array();
  4. for (var i = 0; i <= numTracks - 1; i++) {
  5.         tracklist[i] = i + 1;
  6. }
  7. //Zufalls-Track auswaehlen:
  8. function randomTrack() {
  9.         if (tracklist.length > 0) {
  10.                 var r = Math.floor(Math.random() * tracklist.length);
  11.                 return "song" + tracklist.splice(r, 1) + ".mp3";
  12.         } else {
  13.                 trace("Keine Songs mehr zu laden!");
  14.         }
  15. }
  16. //Soundobjekt instanzieren:
  17. var player = new Sound(this);
  18. //wenn Sound durch, naechster:
  19. player.onSoundComplete = function() {
  20.         this.loadSound(randomTrack());
  21. };
  22. //wenn Sound geladen, starten:
  23. player.onLoad = function(OK) {
  24.         if (OK) {
  25.                 _root.soundLoaded = true;
  26.         } else {
  27.                 trace("Fehler beim Laden!");
  28.         }
  29. };
  30. //Sound laden:
  31. player.loadSound(randomTrack());
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 22-01-2004, 15:06   #10 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
Aber wenn ich das script mit in frame1 plaziere, läuft es doch "in Schleife", da mein Preloader zwischen 1 und 2 hin- und herspringt?!
Ich versuche trotzdem mal mein Glück ...

Vielen Dank von
fransi
fransi ist offline   Mit Zitat antworten
Alt 26-01-2004, 11:10   #11 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
@sonar und ALLE, die vielleicht gerade hier hereinschauen

Ich habe das obige script angepasst und beim Testen innerhalb von Flash MX funktioniert das "meistens". - Nur wenn der SWF-file da liegt, wo er hingehört - nämlich auf dem Server- spielt er immer den gleichen Sound ab. Ich habe natürlich jeweils die 10 MP3-clips im gleichen Ordner wie den SWF plaziert.

Manchmal werden beim testen in Flash auch 2-3 Clips zur gleichen Zeit abgespielt - wahrscheinlich, weil durch die Preloader-Schleife mehrere Clips geladen werden.
Jetzt habe ich schon versucht, der player-variablen (player startet den sound im ersten frame des Hauptfilms) und der Soundvariablen zwischenzeitlich wieder den Wert "0" zuzuordnen, aber diese Versuche waren nicht von Erfolg gekrönt.
Es ist sogar so, dass der "player" immer wieder einen alten Sound abdudelt, den ich schon längst überall durch eine andere MP3-datei ersetzt habe ...
Kann mir jemand helfen???
fransi
fransi ist offline   Mit Zitat antworten
Alt 27-01-2004, 18:56   #12 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
Wollte noch einmal auf meine Frage aufmerksam machen, da ich gerade an dem Problem herumbastle und nicht weiterkomme. wer hat noch einen Hint für mich, wo der Fehler liegen könnte ...?

fransi
fransi ist offline   Mit Zitat antworten
Alt 27-01-2004, 22:45   #13 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Hi Fransi,

is halt jetzt bissl schwierig, sich da reinzudenken in deine Konstruktion... vor allem wenn du so einen komischen Frame-Schleifen-Preloader verwendest und da dann anscheinend einiges schief geht beim Sound laden (gleichzeitig etc.) Ich kann dir schon ein "moderneres" preloader-Skript anbieten, aber das müsste auch angepasst werden... Versuch doch mal, die Sachen zu trennen - also erst deinen Content vorzuladen und dann in einem weiteren Frame dann den Sound...
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 29-01-2004, 16:37   #14 (permalink)
Weil ich ne flashe bin!
 
Benutzerbild von fransi
 
Registriert seit: Jul 2002
Ort: Bremen
Beiträge: 108
Hi sonar,
habe jetzt preloader und Dein Script in verschiedenen Frames. Das heißt, mein preloader verweist (nachdem alles bis auf den externen MP3 geladen ist) auf einen weiteren Frame, in dem Dein letztes Script steht.

Wie stell ichs jetzt am besten an, dass der Film in diesem Frame verweilt, und erst dann weiterläuft, bis das ZufallsMP3 komplett geladen ist???

Im nächsten Frame soll dann der Hauptfilm gleichzeitig mit dem MP3 beginnen: "player.start(0, 4);"

Wär nett, wenn Du mir noch einmal weiterhelfen würdest ...
fransi ist offline   Mit Zitat antworten
Alt 29-01-2004, 22:08   #15 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
So bitte sehr. Habs zwar nicht getestet, aber das sollte schon laufen. Das kommt einfach in das frame, wo das alte Skript von mir drin war. Probiers mal aus...
ActionScript:
  1. stop();
  2. //Songliste generieren:
  3. var numTracks = 10;
  4. var tracklist = new Array();
  5. for (var i = 0; i < numTracks ; i++) {
  6.     tracklist[i] = i + 1;
  7. }
  8. //Soundobjekt instanzieren:
  9. var player = new Sound(this);
  10. //Zufalls-Track auswaehlen:
  11. function randomTrack() {
  12.     if (tracklist.length > 0) {
  13.         var r = Math.floor(Math.random() * tracklist.length);
  14.         return "song" + tracklist.splice(r, 1) + ".mp3";
  15.     } else {
  16.         trace("Keine Songs mehr zu laden!");
  17.     }
  18. }
  19. //preloader fuer den Sound:
  20. function loadMySound (whSound) {
  21.     var w = this.createEmptyMovieClip("watcher", 1);
  22.     player.loadSound(whSound, true);
  23.     w.onEnterFrame = function() {
  24.         var l = _root.player.getBytesLoaded();
  25.         var t = _root.player.getBytesTotal();
  26.         var p = Math.round((l / t) * 100);
  27.         if (t > 4 && l >= t) {
  28.             _root.player.start(0, 4);
  29.             _root.play();
  30.             delete this.onEnterFrame;
  31.         }
  32.     };
  33. };
  34. //Sound laden:
  35. loadMySound(randomTrack());
Grüße in den Norden!
Tom
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)

Geändert von sonar (29-01-2004 um 22:09 Uhr)
sonar ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele