Anzeige

Sound Loop - Hilfe?!?

Sound Loop - Hilfe?!? | PSD-Tutorials.de

Erstellt von Routine, 29.09.2005.

  1. Routine

    Routine Guest

    Sound Loop - Hilfe?!?
    Hallo,

    ich weiss, dass man Sounds einfach loopen kann, aber wie schaff ich es, dass Sound1 > Sound2 und wieder zurück zu Sound 1..... geht?
    Also das beide Sounds in einer Schleife abgespielt werden?

    Meine bisherigen Versuche und Suchen sind leider ohne Erfolg. Entweder hängt es, oder es wiederholt sich und dann ist Schluss...

    Wär über einen funktionsfähigen Code echt erfreut, weil ich da jetzt schon ne Weilöe dran häng und keine Lösung finde.
    Mein bisheriger Code lautet:
    Code (Text):
    1.  
    2. wiederholung = 0;
    3.  
    4. track1 = new Sound(_root.a1);
    5. track1.attachSound("mySound1");
    6. track1.start(0,1);
    7.  
    8. track1.onSoundComplete = function(){
    9.         _root.a1.wiederholung ++;
    10. if(_root.a1.wiederholung == 4){
    11.                 wiederholung = 0;
    12. track2 = new Sound(_root.a2);
    13. track2.attachSound("mySound2");
    14. track2.start(0,1);
    15. }
    16. else{track1.start(0,1);
    17.         }
    18. };
    19.  
    Dabei ist jeder Sound in einem MC (a1/a2...) und ist gekennzeichnet (Sound1/Sound2...)
     
    #1      
  2. 2ter_Heiko

    2ter_Heiko Nicht mehr ganz neu hier

    Dabei seit:
    19.03.2005
    Beiträge:
    126
    Sound Loop - Hilfe?!?
    Setze die Sounds dann soch in ein Spirit oder wie das heißt. Also in eine eigenständige undterebene in dein Hauptfilm, der sich immer wiederholt.
    Ich hoffe ich wurde verstanden und dass ich verstanden habe was du willst.

    Heiko
     
    #2      
  3. Routine

    Routine Guest

    Sound Loop - Hilfe?!?
    Spirit???
    Es geht hier um Flash... da nix Spirit. Du meinst wahrscheinlich eine Instanz... da liegen sie aber schon drin.

    Wär schön, wenn sich jemand mit Flash auskennt und mir sagen kann, wie ich am besten einen Soundloop mit 2 Sounds erzeugen kann, in denen man auch die Wiederholrate eingeben kann.

    EINEN Sound zu loopen ist ja wie gesagt, kein Thema, aber 2 schon eher scheinbar...

    onSoundComplete wäre wohl Vorraussetzung, da es ja ein synchroner Loop sein soll, der ohne Zeitangabe auskommen soll.

    Vielleicht kann jemand mein Script anpassen, oder mir nen anderen Vorschlag machen (aber bitte nicht komplizierter)

    Funtkionsweise sollte des Soundloops sollte sein:
    1,2,1,2,1,2,1,2 ....
     
    #3      
  4. scherbi

    scherbi Nicht mehr ganz neu hier

    Dabei seit:
    21.09.2004
    Beiträge:
    107
    Sound Loop - Hilfe?!?
    Hi

    wenn die Beiden Sounds immer abwechselnd gespielt werden sollen, warum verbindest du sie nicht mit einem Soundeditor?

    mfg
    Scherbi
     
    #4      
  5. 2ter_Heiko

    2ter_Heiko Nicht mehr ganz neu hier

    Dabei seit:
    19.03.2005
    Beiträge:
    126
    Sound Loop - Hilfe?!?
    Ich habe schon mitbekommen dass es um Flash geht ;-)

    Ich habe jedoch nur SwishMax, und da heißt sonne sich unabhängig vom hauptfilm wiederholende funktion "Sprite" in die man alles reinpacken kann. In irgendeiner Form ist das auch mit dem FlashProgramm von Macromedia möglich. Und wenn du es nach so einem Muster haben willst, wieso nimmst du kein Audioprogramm, packst die loops zusammen und speicherst sie als einzige Datei ab?

    Edit: scherbi war schneller
     
    #5      
  6. torquemaster

    torquemaster Guest

    Sound Loop - Hilfe?!?
    Versuche es mal mit Fruity Loops damit setzt du deine Sounds in Loops bzw Endless oder einfacher benutze E-Jay Music Cleanic damit kann man auch endless Loops erstellen ist sogar einfacher als Fruity.
    Wenn das weiter helfen sollte!!!
    Gruß Maik
     
    #6      
  7. h_seldon

    h_seldon Aktives Mitglied

    Dabei seit:
    13.09.2005
    Beiträge:
    338
    Geschlecht:
    männlich
    Ort:
    Nähe München
    Sound Loop - Hilfe?!?
    Hallo,

    so auf die Schnelle würde mir eine rekursive Funktion, also eine Funktion, die sich selbst wieder aufruft, einfallen.

    track1 = new Sound();
    track1.attachSound("mySound1");
    track2 = new Sound();
    track2.attachSound("mySound2");
    function abspielen(wer) {
    wer.start();
    wer.onSoundComplete = function() {
    if (this == track1) {
    abspielen(track2);
    } else {
    abspielen(track1);
    }
    };
    }
    abspielen(track1);

    Zuerst richtest Du zwei Soundobjekte ein (wie bisher in Deinem Code auch). Dann definierst Du eine Funktion abspielen, die als Parameter das Soundobjekt erhält, das aufgerufen werden soll.
    Die Funktion startet den Sound und weist ihm das Ereignis onSoundComplete zu. Sobald der Sound zu Ende ist, wird nachgeschaut, wer gerade abspielte. Wenn das track1 war, wird dieselbe Funktion mit track2 als Parameter aufgerufen. War dagegen track2 aktiv, dann wird die Funktion mit track1 aufgerufen - also eine Art Sound-JOJO.

    Das ist unsauber geskriptet, weil es nur auf zwei Sounds zugeschnitten ist, aber für die konkrete Fragestellung müßte es ausreichend sein.

    happy coding
     
    #7      
  8. h_seldon

    h_seldon Aktives Mitglied

    Dabei seit:
    13.09.2005
    Beiträge:
    338
    Geschlecht:
    männlich
    Ort:
    Nähe München
    Sound Loop - Hilfe?!?
    Hallo,

    ups, Nachtrag: die Sounds müssen nicht in einem MC liegen. Es reicht, wenn Sie in der Bibliothek vorhanden sind und den Verknüpfungsnamen "mySound1" bzw. "mySound2" besitzen.

    happy coding
     
    #8      
  9. Routine

    Routine Guest

    Sound Loop - Hilfe?!?
    hallo,
    erstmal danke für eure antworten... leider lagen die meisten mit ihren antworten, weit neben meiner frage! wenn ich Sounds loopen möchte, dann möchte ich sie bestimmt NICHT WIEDER ZUSAMMENFÜGEN! Nettgemeinte Ratschläge, die mit Flash nix zu tun haben bringen mich auch nicht weiter... h_seldon hat es schon ganz gut erfasst, danke. hab es mittlerweile soweit ganz gut hinbekommen, bis auf die Start bzw. Stop Function. Ist etwas schwierig mit dem Handling.
    Weiss jemand Rat:


    weiss jemand, wie ich folgendes Problem lösen kann?
    ich habe mehrere Sounds, die ich in einer Schleife abspiele (der Einfachheit halber gehe ich hier jetzt immer von nur 2 Sounds aus) diese lade ich wie üblich:
    Code:

    wiederholung = 0; track1 = new Sound(); track1.attachSound("mySound1"); track2 = new Sound(); track2.attachSound("mySound2");


    und die function:
    Code:

    function tracka(){track1.start(0,1);playing=true;track1.onS oundComplete = function(){wiederholung ++; if(wiederholung == 1){wiederholung = 0; trackb();} else{track1.start(0,1);}}};


    der zweite sound erhält die function trackb()
    nun rufe ich, um die sounds zu starten, über einen Play Button
    Code:

    (on Release {tracka();}

    auf.
    Funktioniert auch bestens, aber nun möchte ich diese Sounds stoppen und DA ist das Problem!
    Wenn ich als Befehl z.B.
    Code:

    on (Release) {track1.stop();.....}

    aufrufe, dann stoppen zwar die Sounds, aber ich kann es nicht wieder normal über den Play Button starten, denn dann wird nur noch der erste Sound abgespielt...
    Kann ich eine Function stoppen? Mir wäre es lieber, wenn ich die function tracka() usw. stoppen könnte, geht das?
     
    #9      
  10. Routine

    Routine Guest

    Sound Loop - Hilfe?!?
    Kein Flasher hier, der weiß, wie man eine Function stoppen kann? :(
     
    #10      
  11. h_seldon

    h_seldon Aktives Mitglied

    Dabei seit:
    13.09.2005
    Beiträge:
    338
    Geschlecht:
    männlich
    Ort:
    Nähe München
    Sound Loop - Hilfe?!?
    Wenn Du mehr als zwei Sounds abspielen möchtest, dann ist es besser, sie in einem Array zu verwalten und sie einem einzigen Soundobjekt zuzuweisen als pro Sound ein eigenes Soundobjekt einzurichten. Der Code sieht folgendermaßen aus (hier beispielhaft für 2 Sounds):

    aSounds = ["mySound1","mySound2"];
    index = 0;
    sounds = new Sound();
    function musik(){
    sounds.attachSound(aSounds[index]);
    sounds.start();
    }
    sound.onSoundComplete = function(){
    if(index < aSounds.length-1){
    index++;
    }else{
    index = 0;
    }
    musik();
    }
    b_stop.onPress = function(){
    sounds.stop();
    }
    b_play.onPress = function(){
    sounds.start();
    }
    musik();

    aSounds enthält die Verknüpfungsnamen aller Sounds.
    index definiert die Position der Verknüpfungsnamen innerhalb des Arrays, so daß wir darauf zugreifen können.
    sounds ist eine neues Soundobjekt, dem nacheinander alle Sounds des Arrays zugewiesen werden.
    function musik() erledigt die Soundzuweisung und startet den Sound.
    sound.onSoundComplete fragt nach, ob noch nicht der letzte Sound abgespielt wurde. Das kann man herausfinden, indem man einfach nach dem Inhalt von index fragt. Wenn index kleiner ist als die Gesamtlänge des Arrays - 1, dann ist noch nicht der letzte Sound erreicht, und index kann um 1 hochgezählt werden. Andernfalls wird index einfach auf den ersten gültigen Wert, also die 0, zurück gesetzt. Anschließend ruft man die Funktion musik auf, die über index herausfindet, welcher Sound aktuell abgespielt werden soll.
    Die beiden Buttons stop und play sorgen jeweils dafür, daß der Sound stoppt bzw. wieder abspielt.

    Übrigens: Eine Funktion kann man nicht einfach stoppen. Sie kann entweder gelöscht und bei Bedarf wieder neu zugewiesen werden. Oder man steuert ihre Ausführung mit Hilfe einer Variablen, die 2 Werte annehmen kann (true oder false, in diesem Fall spricht man auch von einer Flag). Wenn die Variable true ist, wird die Funktion aufgerufen, andernfalls nicht.

    Sorry für die sehr späte Anwtort, aber ich blieb einige Tage www-abstinent und habe erst kürzlich wieder vorbeigeschaut. Hoffentlich nützt die Antwort noch irgendetwas.

    viel spaß
     
    #11      
x
×
×