15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Arbeiten mit Sounds<br />

Überwachen der Wiedergabe<br />

Flash Player 9 und höher, Adobe AIR 1.0 und höher<br />

Ihrer Anwendung muss wissen, wann ein Sound beendet ist, sodass ein weiterer Sound wiedergegeben oder bestimmte<br />

Ressourcen freigegeben werden können, die für die abgeschlossene Wiedergabe verwendet wurden. Die<br />

SoundChannel-Klasse löst ein Event.SOUND_COMPLETE-Ereignis aus, nachdem ein Sound vollständig wiedergegeben<br />

wurde. Ihre Anwendung kann auf dieses Ereignis überwachen und eine entsprechende Aktion ausführen. Betrachten<br />

Sie dazu den folgenden Beispielcode:<br />

import flash.events.Event;<br />

import flash.media.Sound;<br />

import flash.net.URLRequest;<br />

var snd:Sound = new Sound();<br />

var req:URLRequest = new URLRequest("smallSound.mp3");<br />

snd.load(req);<br />

var channel:SoundChannel = snd.play();<br />

channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);<br />

public function onPlaybackComplete(event:Event)<br />

{<br />

trace("The sound has finished playing.");<br />

}<br />

Die SoundChannel-Klasse löst während der Wiedergabe keine Fortschrittereignisse aus. Um den Fortschritt der<br />

Wiedergabe zu melden, muss Ihre Anwendung einen eigenen Timermechanismus einrichten und die Position des<br />

Sound-Abspielkopfs verfolgen.<br />

Zur Berechnung des Prozentsatzes, der von einem Sound wiedergegeben wurde, können Sie den Wert der<br />

SoundChannel.position-Eigenschaft durch die Länge der Sounddaten dividieren, die bereits wiedergegeben<br />

wurden:<br />

var playbackPercent:uint = 100 * (channel.position / snd.length);<br />

Jedoch meldet dieser Code nur dann den genauen Prozentsatz der wiedergegebenen Sounddaten, wenn die Datei<br />

vollständig geladen war, bevor die Wiedergabe gestartet wurde. Die Sound.length-Eigenschaft zeigt die Größe der<br />

aktuell geladenen Sounddaten, nicht die tatsächliche Größe der gesamten Sounddatei an. Um den Fortschritt bei der<br />

Wiedergabe eines Streaming-Sounds zu verfolgen, der noch geladen wird, muss Ihre Anwendung die tatsächliche<br />

Größe der gesamten Sounddatei schätzen und diesen Wert in den Berechnungen verwenden. Sie können die<br />

tatsächliche Länge der Sounddaten mithilfe der bytesLoaded- und bytesTotal-Eigenschaften des Sound-Objekts<br />

schätzen. Dazu wird z. B. der folgende Code verwendet:<br />

var estimatedLength:int =<br />

Math.ceil(snd.length / (snd.bytesLoaded / snd.bytesTotal));<br />

var playbackPercent:uint = 100 * (channel.position / estimatedLength);<br />

Mit dem folgenden Code wird eine größere Sounddatei geladen und als Timermechanismus das<br />

Event.ENTER_FRAME-Ereignis verwendet, um den Fortschritt bei der Wiedergabe anzuzeigen. Der Code meldet<br />

regelmäßig den Prozentsatz der wiedergegebenen Sounddaten, der aus dem Wert für die aktuelle Position dividiert<br />

durch die Gesamtlänge der Sounddaten berechnet wird:<br />

Letzte Aktualisierung 27.6.2012<br />

480

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!