Antworten auf deine Fragen:
Neues Thema erstellen

Möglichkeit nur einen Ton zur Zeit abzuspielen?

marcp

Nicht mehr ganz neu hier

Hallo,

habe das Problem, dass ich mehrere Buttons auf der Bühne habe, die jeweils unterschiedliche Töne erzeugen und wenn man schnell genug klickt laufen die Töne alle durcheinander und durch mehrmaliges klicken fangen sie auch immer wieder von Anfang an, auch wenn sie gerade schon laufen.

Habe nun auch schon teilweise geschafft behelfsmäßig an ein paar Funktionen

kanal.stop();

dran zu hängen um somit andere Sounds zu stoppen, aber
...ich fänd es viel besser, wenn ich eine möglichst allgemeine Funktion dafür hätte, die andere Sounds stoppt oder gar ausfadet, sobald ein anderer Ton oder ein anderes z.B. Click Event ausgelöst wird.

...Und noch eine andere Funktion, die unterbindet, dass ein Audiodatei wieder von Vorne startet, wenn man während ihres Abspielens nochmal dessen MC oder Button zum Abspielen anklickt.

Wäre sehr dankbar, wenn mir da jemand weiter helfen kann.
Danke schon mal..



EDIT:
kennt sich hier keiner damit aus oder war meine Frage so unklar gestellt?
 
Zuletzt bearbeitet:

tukinu

Fotografiert

AW: Möglichkeit nur einen Ton zur Zeit abzuspielen?

hello,

die lösung heisst:

SoundMixer

da gibt es eine funktion: SoundMixer.stopAll();

das sollte helfen.
 

marcp

Nicht mehr ganz neu hier

AW: Möglichkeit nur einen Ton zur Zeit abzuspielen?

@
klasse, vielen dank!!
dachte mir doch, dass es da eine möglichkeit geben muss.
werd ich gleich mal ausprobieren..



weiß zufällig nun noch jemand, wie man die funktion schreiben muss, dass ein button einen sound vom ersten mal klicken erst zu ende abspielt, selbst wenn er noch ein 2. mal währenddessen geklickt wurde?
 
Zuletzt bearbeitet:

tukinu

Fotografiert

AW: Möglichkeit nur einen Ton zur Zeit abzuspielen?

ich würde ein boolean dafür bauen. irgendsowas:
PHP:
if(!geklickt){
//play sound
geklickt = true;
}
dann ein listern für den soundComplete bauen der den boolean wieder auf false setzt.
 

marcp

Nicht mehr ganz neu hier

AW: Möglichkeit nur einen Ton zur Zeit abzuspielen?

Bin mir ehrlich gesagt nun nicht ganz im Klaren darüber, welchen Vorteil das mit dem SoundMixer.stopAll(); im Gegensatz zu kanal.stop(); hat, wenn kanal eine Variable vom Typ SoundChannel ist. Würge ich nicht auch so schon alle Sounds ab, wenn ich kanal.stop(); aufrufe?
Konnte irgendwie nicht viel zu SoundMixer finden bzw habe nicht ganz verstanden, wie ich das nutzen kann und wo der Unterschied im Gebrauch zu SoundChannel ist.

Leider sind meine Programmierkenntnisse auch noch nicht so gut, dass ich mir das diese If-Anweisung mal eben schnell zusammbastel. Oder wie kann ich abfragen, ob der Button bereits geklickt wurde?

Hatte jetzt die Idee eine Boolean Variable mit False vorzubelegen. zB. "spielt" und diese jedes Mal beim Klicken auf True zu setzen.
Wenn es eine Funktion gibt, mit der man dann alle MouseEvents deaktivieren könnte, wäre das schon gut.
Dann bräuchte ich nur noch einen EventListener, der abfragt, ob der Ton bereits zu Ende abgespielt wurde und die variable "spielt" dann wieder auf False setzt um die MouseEvents wieder zu aktivieren.
 

tukinu

Fotografiert

AW: Möglichkeit nur einen Ton zur Zeit abzuspielen?

die SoundMixer klasse kannst du dir wie eine globale sound steuerung vorstellen. wenn du zum beispiel 12 SoundChannels hast und jeden einzeln stoppen müsstest, wäre das umständlich.

für deinen beispiel würde ich nicht jeweils der listener löschen, das wird komplizierter als einen boolean erstellen.

hier hast du ein beispiel:
(erstelle auf der bühne ein MovieClip mit dem instanz namen "muteBt" und kopier diesen script im ersten frame)

PHP:
var sound1:Sound=new Sound(new URLRequest("hier kommt dein song.mp3"));
var sndTrans1:SoundTransform = new SoundTransform(1);
var channel1:SoundChannel = sound1.play(0);
channel1.soundTransform = sndTrans1;

channel1.addEventListener(Event.SOUND_COMPLETE, sndComplete); 

function sndComplete():void{
    isPlaying = true; // wenn der song fertig ist, dann isPlaying auf true damit er wieder gestartet werden kann
    SoundMixer.stopAll();    
}

var isPlaying:Boolean = false;

muteBt.addEventListener (MouseEvent.CLICK, mute);

function mute (e:Event) {
    // wenn isPlaying = true ist, dann darf der song nochmals gespielt werden
    if (isPlaying) {
        channel1 = sound1.play(0);
        isPlaying = false; // isPlaying auf false setzten, damit bei einem klick der song nicht nochmals gestartet wird
    } 
}
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben