Rheinwerk Design < openbook > Rheinwerk Design - Know-how für Kreative.
Know-how für Kreative.

Inhaltsverzeichnis
Vorwort
1 Flash für ActionScript
2 ActionScript in Flash
3 Flash Pro für ActionScript
4 Grundlagen der Programmierung
5 Einfache Filmsteuerung
6 Bildschirme und Präsentationen
7 Drucken und das Kontextmenü
8 Textfelder
9 Tasten
10 Datum und Zeit
11 Rechnen
12 Farbe wechseln und Drag
13 Zeichnen und Zufall
14 Von Mäusen und Duplikaten
15 Kollisionstest
16 Sound
17 Video
18 Externe Filme
19 Vorladen und Player erkennen
20 Formulare und UI-Komponenten
21 Komponenten anpassen
22 Formulare versenden
23 Warenkorb
24 Ausblick auf ActionScript 3
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Einstieg in ActionScript von Christian Wenz, Tobias Hauser, Armin Kappler
Aktuell zu Flash 8
Buch: Einstieg in ActionScript

Einstieg in ActionScript
brosch., mit CD und QuickFinder und Referenz
416 S., 24,90 Euro
Rheinwerk Design
ISBN 978-3-89842-774-6
Pfeil 16 Sound
  Pfeil 16.1 Sound in Flash
  Pfeil 16.2 Sound mit ActionScript
  Pfeil 16.3 Mehrere Sounds


Rheinwerk Computing - Zum Seitenanfang

16.2 Sound mit ActionScript  topZur vorigen Überschrift

Wie Sie Sound steuern, der in einem Schlüsselbild steckt, werden Sie aufgrund Ihres Wissens aus den letzten Kapiteln bereits ahnen: Da der Sound synchron zur Animation abläuft, müssen Sie den Abspielkopf anhalten und weiterspielen lassen. Hierfür dienen die Methoden zur Filmsteuerung, die wir Ihnen in Kapitel 5, »Einfache Filmsteuerung«, ausführlich gezeigt haben.

Interessanter sind die globalen Steuerungsmöglichkeiten und vor allem die Sound-Klasse, mit deren Hilfe Sie Sound steuern und direkt aus der Bibliothek laden können.

Globale Steuerung

Für die globale Steuerung von Sound gibt es eine globale Eigenschaft und eine globale Funktion:

  • _soundbuftime ist eine globale Eigenschaft; sie gibt die Verzögerung in Sekunden an, die ein Streaming-Sound braucht, bis er gestartet wird. Es handelt sich um einen Puffer, der verhindert, dass der Sound einen Aussetzer zwischendrin hat. Der Standardwert liegt bei fünf Sekunden, die meistens ausreichen. Sie können aber auch einen anderen Wert angeben:
_soundbuftime = 10;
  • stopAllSounds() ist eine globale Funktion, die alle Sounds im Dokument anhält, nicht aber den Abspielkopf. Trifft dieser erneut auf Streaming-Sound, geht der Sound weiter. Diese Funktion ist auch das einzige, was hinter dem Verhalten Alle Sounds stoppen steckt:
stopAllSounds();
Sound-Klasse

Praktischerweise hat Macromedia sämtliche Funktionalität, die Sie für die Arbeit mit einem bestimmten Sound brauchen, in eine Klasse gepackt.

Im Aktionen-Bedienfeld ist sie unter ActionScript 2.0-Klassen • Medien • Sound (Integrierte Klassen • Medien • Sound) zu finden. Und so arbeiten Sie mit der Sound-Klasse:

Abbildung 16.3 Die Sound-Klasse im Eigenschafteninspektor

1. Zuerst instanziieren Sie ein neues Sound-Objekt:
       
var soundname_sound:Sound = new Sound();
    • Beachten Sie die Dateiendung _sound für Codehinweise zum Sound-Objekt in Flash 8, MX 2004 und MX.
2. Anschließend fügen Sie mit der Methode attachSound(Exportverknüpfung)attachSound() (Methode) einen Sound zu diesem Objekt hinzu:
       
soundname_sound.attachSound("musik_sound");
    • Dieser Sound existiert bis jetzt nur in der Bibliothek. Das heißt, Sie müssen ihn von dort exportieren, damit ActionScript ihn überhaupt kennt. Dies erledigen Sie im Dialogfenster Verknüpfungseigenschaften. Klicken Sie zum Einblenden mit der rechten Maustaste auf den Sound und wählen Sie Verknüpfung.
3. Nun können Sie auf den Sound zugreifen und ihn beispielsweise mit der Methode start(Startzeitpunkt, Schleifenwiederholungen)start() (Methode) abspielen lassen. Mit Parametern legen Sie fest, an welcher Stelle der Sound starten und wie oft er abgespielt werden soll; beide Paramter sind allerdings optional. Der Startzeitpunkt wird in Sekunden angegeben und bezieht sich auf den Sound selbst; ein Start bei 15 Sekunden bedeutet also, der Sound startet an seiner fünfzehnten Sekunde. In der folgenden Zeile startet er sofort und läuft viermal:
       

Export- und Soundname

Wir wählen gerne für den Export- und den Soundnamen denselben Bezeichner. Der Grund dafür: So muss man sich weniger Namen merken.


soundname_sound.start(0,4);

Abbildung 16.4 Im Dialogfeld aktivieren Sie Export für ActionScript und geben einen Bezeichner ein.

Tabelle 16.2 gibt einen Überblick, welche Methoden und Eigenschaften die Sound-Klasse zur Verfügung stellt.

Mit der Klasse System.capabilities können Sie testen, ob in einem System Sound zur Verfügung steht. Die Eigenschaft hasAudio überprüft, ob es Sound gibt; hasAudioEncoder stellt fest, ob Player für verschiedene Dateiformate vorhanden sind; hasMP3 testet, ob MP3-Dateien abspielbar sind. Alle drei liefern einen Wahrheitswert, der aber mit Vorsicht zu genießen ist, denn bei hasAudio wird beispielsweise nichts darüber ausgesagt, ob der Sound auch angeschaltet ist. Ein Test dieser Art ist in der Praxis nicht unbedingt notwendig und nur bedingt sinnvoll.

Nachdem Sie wissen, wie die Soundsteuerung in der Theorie funktioniert, ist es Zeit für ein praktisches Beispiel. Die Ausgangsdatei finden Sie auf der CD-ROM unter dem Namen einfache_soundsteuerung.fla für beide Flash-Versionen in den jeweiligen Ordnern. Sie besteht aus zwei Schaltflächen für das Abspielen und Anhalten des Sounds und aus einem Schieberegler für die Lautstärke.

Abbildung 16.5 Zwei Schaltflächen und ein Schieberegler sollen für die Soundsteuerung sorgen.


Methode/Eigenschaft Beschreibung

attachSound(Name)

Fügt einen durch Name identifizierten, vorher exportierten Sound aus der Bibliothek an.

duration

Liefert die Dauer eines Sounds inMillisekunden. Diese Eigenschaft ist nur lesbar, lässt sich aber nicht ändern.

getBytesLoaded()

Gibt bei einem gestreamten Sound die Zahl der schon geladenen Bytes zurück. Kann mit getBytesTotal abgeglichen werden.

getBytesTotal()

Liefert die Gesamtzahl der Bytes eines Sounds.

getPan()

Liefert die Links-Rechts-Balance eines Sounds (welcher Kanal überwiegt?) mit Werten von –100 (linker Kanal) bis +100 (rechter Kanal). Vergleichbar mit dem Balance-Regler an Ihrer Stereoanlage.

getTransform()

Liefert ein Transformationsobjekt. Ein Transformationsobjekt ist als normales Objekt definiert und kann folgende vier Eigenschaften annehmen:

  • ll – Wie viele Geräusche für den linken Kanal werden dort abgespielt?
  • lr – Wie viele Geräusche des linken Kanals werden rechts abgespielt?
  • rr – Wie viele Geräusche des rechten Kanals werden dort abgespielt?
  • rl – Wie viele Geräusche des rechten Kanals werden links abgespielt?

Bei Stereo-Sound sind standardmäßig alle Geräusche auf beide Kanäle gleich verteilt, also ll = 100 und rr = 100, bei Monosound sind alle Geräusche im linken Kanal (ll = 100, lr = 100).

getVolume()

Liefert die Lautstärke von 0 (nicht hörbar) bis 100 (sehr laut).

loadSound(URL, Streaming)

Diese Methode gibt es erst seit Flash MX. Dient zur Arbeit mit MP3-Dateien und lädt eine Datei von einer URL. Der zweite Parameter gibt an, ob die Datei im Streaming geladen werden soll: Abspielen des Sounds beginnt schon beim Laden (true). Wenn nicht (false), handelt es sich um Ereignis-Sound, der vollständig geladen werden muss, bevor das Abspielen startet. Dies ist z. B. beim Klicken einer Schaltfläche sinnvoll, da hier ein verzögertes Streaming unsinnig ist.

position

Gibt an, wie viele Millisekunden der Sound schon abgespielt wurde. Diese Eigenschaft ist nur lesbar.

setPan(Balance)

Setzt die Links-Rechts-Balance mit Werten von --100 (links) bis +100 (rechts).

setTransform(Transformationsobjekt)

Setzt ein Transformationsobjekt (siehe Erläuterung bei getTransform).

setVolume(Lautstärke)

Bestimmt die Lautstärke von 0 (nicht hörbar) bis 100 (sehr laut).

start()

start(Start, Wiederholung)

Startet einen Sound. Optional können Sie den Startzeitpunkt in Sekunden und die Anzahl der Abspielwiederholungen angeben. Der Startzeitpunkt ist die Sekunde des Sounds, ab der er abgespielt wird. Ist ein Sound 10 Sekunden lang, bedeutet ein Startzeitpunkt bei 5 Sekunden, dass der Sound ab der Hälfte gespielt wird.

stop()

stop(Name)

Hält alle Sounds bzw. den Sound mit dem angegebenen Namen an.


Tabelle 16.2 Wichtige Methoden und Eigenschaften für Sound

Schritt für Schritt: Einfache Soundsteuerung

Für die zwei Schaltflächen arbeiten Sie mit Ereignisprozeduren, der Code landet folglich im ersten Schlüsselbild der Hauptzeitleiste auf der Ebene ActionScript. Der Code für den Schieberegler steht in der MovieClip-Instanz des Reglers.

Zuerst instanziieren Sie ein neues Sound-Objekt:

var musik_sound:Sound = new Sound();

Fügen Sie anschließend mit attachSound(Exportname) den Sound hinzu:

musik_sound.attachSound("lied1");

Der Sound wurde vorher in der Bibliothek via Kontextmenü (Befehl Verknüpfung) für ActionScript mit dem Namen lied1 exportiert.

Als Nächstes programmieren Sie die Ereignisprozedur für die Abspiel-Schaltfläche (Instanzname abspielen_btn):

abspielen_btn.onRelease = function() {
   var position:Number = musik_sound.position / 1000;
   musik_sound.stop();
   musik_sound.start(position, 20000);
};

Diese Konstruktion ist sehr komplex: Die erste Zeile in der Ereignisprozedur stellt die aktuelle Position im Sound fest und wandelt sie in Sekunden um. Die zweite Zeile hält die Musik an und beginnt den Sound wieder an der gespeicherten Position.

Erkennen Sie den Grund für die Komplexität? Die Konstruktion fängt ab, wenn der Nutzer die Abspiel-Schaltfläche mehrmals hintereinander drückt. Wenn Sie nur musik_sound.start(0, 20000); schreiben, wird der Sound mehrmals gestartet und überlagert sich selbst.

Übrigens, eine richtige Endlosschleife für Sound gibt es nicht. Allerdings erzielen Sie einen ähnlichen Effekt, wenn Sie als Wert für die Wiederholung eine sehr hohe Zahl wählen.

Die Schaltfläche zum Anhalten des Sounds realisieren Sie einfacher:

stoppen_btn.onRelease = function() {
   musik_sound.stop();
};

stop() hält die Musik an der Stelle an, wo sie sich gerade befindet. Von dort geht es mit dem Abspielen später weiter. Hier sind viele Varianten denkbar.

5. Vorbereitungen für den Schieberegler
       

Wechseln Sie in die Aktion für den MovieClip des Lautstärke-Reglers und definieren Sie dort die Koordinaten für den Regler:

onClipEvent (load) {
   var mposoben_num:Number = _y-150;
   var mposunten_num:Number = _y;
   var mposlinks_num:Number = _x;
   var mposrechts_num:Number = _x;
   _y += 0;
}

Die Koordinaten sind die Begrenzung, innerhalb der Drag & Drop für den Regler möglich sein soll.

Starten Sie anschließend Drag & Drop mit den Koordinaten zur Begrenzung, wenn der Nutzer auf den Regler klickt:

on (press) {
   startDrag(this, false, mposlinks_num, mposoben_num, 
   mposrechts_num, mposunten_num);
}

Beim Loslassen der Maustaste beenden Sie das Ziehen des Reglers:

on (release) {
   stopDrag();
}

Passen Sie jetzt die Lautstärke des Musikstücks mit der Methode setVolume(Lautstärke) an:

onClipEvent (enterFrame) {
   this._parent.musik_sound.setVolume(Math.round(100+(mposoben_num-_y)*0.67));
}

Da die Lautstärke von 0 bis 100 eingestellt wird, die Koordinaten für den Regler aber bis 150 reichen, müssen Sie den Wert anpassen.

Die fertige Datei finden Sie unter dem Namen einfache_Soundsteuerung_AS2.fla im Ordnern Flash8 bzw. FlashMX2004 und unter einfache_Soundsteuerung_AS1.fla im Ordner FlashMX auf der CD-ROM.

Externer Sound

Sound wird normalerweise ein Teil des Flash-Films. Extern geladen werden können nur MP3-Dateien und dies erst seit Flash MX. Dafür zuständig ist die Methode loadSound(Adresse, Streaming). Der erste Parameter ist die Adresse der MP3-Datei, der zweite ein Wahrheitswert, der angibt, ob die Datei als Streaming-Sound (true) oder Ereignis-Sound (false) geladen werden soll. So arbeiten Sie mit loadSound:

1. Zuerst instanziieren Sie ein Sound-Objekt:
       
musik_sound = new Sound();
2. Dann laden Sie den Sound:
       
musik_sound.loadSound("musik.mp3", true);

ID3

Flash 8 und MX 2004 erlaubt den Zugriff auf so genannte ID3-Dateien. Das sind Metadateien für MP3-Musikstücke. Sie enthalten eine Beschreibung zu Musikstück, Album, Interpreten und vielem mehr. Mit ActionScript greifen Sie darauf zu. Das zugehörige Ereignis ist onID3, die Eigenschaften finden Sie im Aktionen-Bedienfeld unter ActionScript 2.0-Klassen • Medien • Sound • Objekte • id3 (Flash MX 2004: Integrierte Klassen • Medien • Sound • Objekte • id3).


Wenn der Sound fertig ist …

Mit dem Ereignis soundComplete können Sie Aktionen ausführen, wenn der Sound komplett abgespielt wurde (inklusive aller Schleifenwiederholungen!). Und so testen Sie onSoundComplete als Ereignisprozedur:

_root.musik_sound.onSoundComplete = function() {
   trace("Sound abgespielt");
};

Dieses Ereignis hat wesentlich mehr Bedeutung, als es auf den ersten Blick erkennen lässt. Sie können mit seinem Einsatz Animationen mit Sound synchronisieren und erst dann eine neue Animation starten, wenn der Sound zur ersten Animation abgespielt ist.

Das zweite Ereignis für Sound ist load; es gibt den Zeitpunkt an, wann ein Sound geladen wird.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 <<   zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: ActionScript 3 – Das Praxisbuch
ActionScript 3
Das Praxisbuch

bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: JavaScript






 JavaScript


Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Rheinwerk-Shop: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern