Paket | flash.media |
Klasse | public class Sound |
Vererbung | Sound EventDispatcher Object |
Unterklassen | SoundAsset |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
In Flash Player 10 und höher und AIR 1.5 und höher können Sie diese Klasse auch verwenden, um mit Sound zu arbeiten, der dynamisch generiert wird. In diesem Fall verwendet das Soundobjekt die Funktion, die Sie einer sampleData
-Ereignisprozedur zuweisen, um Sounddaten abzurufen. Der Sound wird abgespielt, während er von einem ByteArray-Objekt abgerufen wird, das Sie mit Sounddaten füllen. Sie können Sound.extract()
verwenden, um Sounddaten aus einem Soundobjekt zu extrahieren. Anschließend können Sie die Daten bearbeiten, bevor Sie sie wieder zurück in den Stream zum Abspielen schreiben.
Den in einer SWF-Datei eingebetteten Sound können Sie über die Eigenschaften in der SoundMixer-Klasse steuern.
Hinweis: Die Sound-API in ActionScript 3.0 unterscheidet sich von der in ActionScript 2.0. In ActionScript 3.0 können Sie Soundobjekte zum Steuern der zugehörigen Eigenschaften nicht in einer Hierarchie anordnen.
Beachten Sie bei Verwendung dieser Klasse das folgende Sicherheitsmodell:
- Sounddaten können nicht geladen und wiedergegeben werden, wenn sich die aufrufende Datei in einer Netzwerk-Sandbox befindet und die zu ladende Sounddatei lokal gespeichert ist.
- In der Standardeinstellung ist ein Laden und Abspielen von Sound nicht erlaubt, wenn die aufrufende Datei lokal ist und versucht, Sound remote zu laden und abzuspielen. Ein Benutzer muss explizit Zugriffsrechte gewähren, um diese Art des Zugriffs zu erlauben.
- Für bestimmte Vorgänge bei Sounddaten liegen Beschränkungen vor. Auf die Daten in einem geladenen Sound kann nur über eine Datei in einer anderen Domäne zugegriffen werden, wenn eine Cross-Domain-Richtliniendatei implementiert ist. Zu den soundbezogenen APIs, die unter diese Beschränkung fallen, zählen die
Sound.id3
-Eigenschaft sowie die MethodenSoundMixer.computeSpectrum()
,SoundMixer.bufferTime
und dieSoundTransform()
-Klasse.
In Adobe AIR unterliegt Inhalt in der Sicherheitssandbox der Anwendung
(Inhalt, der mit der AIR-Anwendung installiert wird) nicht diesen Sicherheitseinschränkungen.
Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.
Verwandte API-Elemente
Eigenschaft | Definiert von | ||
---|---|---|---|
bytesLoaded : uint [schreibgeschützt]
Gibt die derzeit verfügbare Anzahl der Byte in diesem Soundobjekt zurück. | Sound | ||
bytesTotal : int [schreibgeschützt]
Gibt die Gesamtanzahl der Byte in diesem Soundobjekt zurück. | Sound | ||
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
id3 : ID3Info [schreibgeschützt]
Bietet Zugriff auf die Metadaten, die in MP3-Dateien enthalten sind. | Sound | ||
isBuffering : Boolean [schreibgeschützt]
Gibt den Zwischenspeicherstatus externer MP3-Dateien zurück. | Sound | ||
isURLInaccessible : Boolean [schreibgeschützt]
Gibt an, ob die Sound.url-Eigenschaft gekürzt wurde. | Sound | ||
length : Number [schreibgeschützt]
Die Länge des aktuellen Sounds in Millisekunden. | Sound | ||
url : String [schreibgeschützt]
Die URL, von der der Sound geladen wurde. | Sound |
Methode | Definiert von | ||
---|---|---|---|
Erstellt ein neues Soundobjekt. | Sound | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird. | EventDispatcher | ||
Schließt den Stream. Dadurch werden eventuelle Downloads von Daten beendet. | Sound | ||
Sendet ein Ereignis in den Ereignisablauf. | EventDispatcher | ||
Extrahiert unformatierte Sounddaten aus einem Soundobjekt. | Sound | ||
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat. | EventDispatcher | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Initiiert den Ladevorgang einer externen MP3-Datei von der angegebenen URL. | Sound | ||
lädt MP3-Sounddaten aus einem ByteArray-Objekt in ein Sound-Objekt. | Sound | ||
loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Lädt PCM 32-Bit-Gleitkomma-Sounddaten aus einem ByteArray-Objekt in ein Sound-Objekt. | Sound | ||
play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Erstellt ein neues SoundChannel-Objekt zur Wiedergabe von Sound. | Sound | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Entfernt einen Listener aus dem EventDispatcher-Objekt. | EventDispatcher | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object | ||
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist. | EventDispatcher |
Ereignis | Übersicht | Definiert von | ||
---|---|---|---|---|
[broadcast event] Wird ausgelöst, wenn Flash Player oder eine AIR-Anwendung den Betriebssystemfokus erhält und aktiv wird. | EventDispatcher | |||
Wird nach dem erfolgreichen Laden von Daten ausgelöst. | Sound | |||
[broadcast event] Wird ausgelöst, wenn Flash Player- oder die AIR-Anwendung den Fokus verliert und inaktiv wird. | EventDispatcher | |||
Wird durch ein Soundobjekt ausgelöst, wenn ID3-Daten für MP3-Sound verfügbar sind. | Sound | |||
Wird beim Auftreten eines I/O-Fehlers ausgelöst, durch den der Ladevorgang fehlschlägt. | Sound | |||
Wird beim Start eines Ladevorgangs ausgelöst. | Sound | |||
Wird ausgelöst, wenn während eines Ladevorgangs Daten empfangen werden. | Sound | |||
Wird abgesetzt, wenn die Laufzeitumgebung neue Audiodaten anfordert. | Sound |
bytesLoaded | Eigenschaft |
bytesLoaded:uint
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Gibt die derzeit verfügbare Anzahl der Byte in diesem Soundobjekt zurück. Diese Eigenschaft ist in der Regel nur für extern geladene Dateien nützlich.
Implementierung
public function get bytesLoaded():uint
bytesTotal | Eigenschaft |
id3 | Eigenschaft |
id3:ID3Info
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bietet Zugriff auf die Metadaten, die in MP3-Dateien enthalten sind.
MP3-Sounddateien können ID3-Tags mit Metadaten zur Datei enthalten. Wenn MP3-Sound, der mit der Sound.load()
-Methode geladen wurde, ID3-Tags enthält, können Sie diese Eigenschaften abfragen. Es werden nur ID3-Tags unterstützt, die den UTF-8-Zeichensatz verwenden.
Flash Player 9 und höher sowie AIR unterstützen ID3 2.0-Tags, im Speziellen 2.3 und 2.4. In der folgenden Tabelle sind die ID3 2.0-Standardtags und der Inhaltstyp der einzelnen Tags aufgeführt. Mit der Sound.id3
-Eigenschaft kann über das Format my_sound.id3.COMM
, my_sound.id3.TIME
usw. auf diese Tags zugegriffen werden. Die erste Tabelle beschreibt Tags, auf die entweder über den ID3 2.0- oder den ActionScript-Eigenschaftennamen zugegriffen werden kann. Die zweite Tabelle beschreibt ID3-Tags, die unterstützt werden, aber keine vordefinierten Eigenschaften in ActionScript haben.
ID3 2.0-Tag | Entsprechende Soundklasseneigenschaft |
COMM | Sound.id3.comment |
TALB | Sound.id3.album |
TCON | Sound.id3.genre |
TIT2 | Sound.id3.songName |
TPE1 | Sound.id3.artist |
TRCK | Sound.id3.track |
TYER | Sound.id3.year |
In der folgenden Tabelle sind ID3-Tags beschrieben, die unterstützt werden, jedoch in der Soundklasse über keine vordefinierten Eigenschaften verfügen. Auf diese Tags kann durch Aufrufen von mySound.id3.TFLT
, mySound.id3.TIME
usw. zugegriffen werden. HINWEIS: Keines dieser Tags wird in Flash Lite 4 unterstützt.
Eigenschaft | Beschreibung |
TFLT | Dateityp |
TIME | Zeit |
TIT1 | Beschreibung der Inhaltsgruppe |
TIT2 | Titel/Liedtitel/Inhaltsbeschreibung |
TIT3 | Untertitel/Detaillierte Beschreibung |
TKEY | Erster Ton |
TLAN | Sprachen |
TLEN | Länge |
TMED | Medientyp |
TOAL | Originalalbum-/Film-/Präsentationstitel |
TOFN | Originaldateiname |
TOLY | Originalautor/Songwriter |
TOPE | Originalkünstler |
TORY | Jahr der Erstveröffentlichung |
TOWN | Eigentümer/Lizenznehmer |
TPE1 | Hauptkünstler/Solokünstler |
TPE2 | Band/Orchester/Begleitung |
TPE3 | Leitung/Detaillierte Auflistung der Künstler |
TPE4 | Interpretation, Remix oder sonstige Bearbeitung durch |
TPOS | Teil eines Satzes |
TPUB | Publisher |
TRCK | Titelnummer/Position in Satz |
TRDA | Aufnahmedaten |
TRSN | Name des Internet-Radiosenders |
TRSO | Eigentümer des Internet-Radiosenders |
TSIZ | Größe |
TSRC | ISRC (International Standard Recording Code) |
TSSE | Software/Hardware und Einstellungen für die Kodierung |
TYER | Jahr |
WXXX | URL-Verknüpfung |
Bedenken Sie bei Verwendung dieser Eigenschaft das Flash Player-Sicherheitsmodell:
- Die
id3
-Eigenschaft eines Soundobjekts ist immer für SWF-Dateien erlaubt, die in der gleichen Sicherheitssandbox wie die Sounddatei sind. Bei Dateien in anderen Sandboxen werden Sicherheitsprüfungen durchgeführt. - Wenn Sie Sound mithilfe der
load()
-Methode der Soundklasse laden, können Sie einencontext
-Parameter angeben, bei dem es sich um ein SoundLoaderContext-Objekt handelt. Wenn Sie diecheckPolicyFile
-Eigenschaft des SoundLoaderContext-Objekts auftrue
festlegen, wird in Flash Player auf dem Server, von dem der Sound geladen wird, eine URL-Richtliniendatei gesucht. Wenn eine Richtliniendatei existiert und diese den Zugriff von der Domäne der ladenden SWF-Datei erlaubt, darf die Datei auf dieid3
-Eigenschaft des Soundobjekts zugreifen; andernfalls darf sie es nicht.
In Adobe AIR unterliegt Inhalt in der Sicherheitssandbox der Anwendung
(Inhalt, der mit der AIR-Anwendung installiert wird) nicht diesen Sicherheitseinschränkungen.
Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.
Implementierung
public function get id3():ID3Info
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
Im Konstruktor wird die Sounddatei geladen, ist jedoch nicht auf das Abspielen eingestellt. Hier wird davon ausgegangen, dass sich die Datei im SWF-Verzeichnis befindet. Das System muss über die Berechtigung zum Lesen der ID3-Tags einer geladenen Sounddatei verfügen. Wenn die Datei ID3-Informationen enthält und das Programm berechtigt ist, diese zu lesen, wird ein Event.ID3
-Ereignis ausgelöst und die Eigenschaft id3
der Sounddatei wird gefüllt. Die id3
-Eigenschaft enthält ein ID3Info
-Objekt mit allen ID3-Informationen.
In der id3Handler()
-Methode werden die ID3-Tags der Datei in id3
, einem ID3Info-Klassenobjekt, gespeichert. Es wird ein Textfeld instanziiert, um die Liste der ID3-Tags anzuzeigen. Die for-Schleife durchläuft alle ID3 2.0-Tags und hängt den Namen und den Wert an den Inhalt des Textfelds an. Mithilfe der ID3-Info-Eigenschaften (ID3Info
) werden der Interpret, der Titelname und das Album ebenfalls angehängt. ActionScript 3.0 sowie Flash Player 9 und höher unterstützen ID3 2.0-Tags, speziell 2.3 und 2.4. Wenn Sie Eigenschaften durchlaufen wie in der for-Schleife, werden nur ID3 2.0-Tags angezeigt. Die Daten aus den früheren Versionen werden jedoch ebenfalls in der id3
-Eigenschaft des Titels gespeichert und können mithilfe der Eigenschaften der ID3-Info-Klasse abgerufen werden. Die Tags für ID3 1.0 befinden sich am Ende der Datei, während die ID3 2.0-Tags am Anfang der Datei stehen. (In einigen Fällen weisen Dateien sowohl die Tags der früheren als auch die der älteren Versionen an derselben Stelle auf.) Wenn eine Datei sowohl am Anfang als auch am Ende der Datei Tags beider Versionen, 1.0 und 2.0, aufweist, wird die id3Handler()
-Methode zwei Mal aufgerufen. Zuerst wird die 2.0-Version und dann die 1.0-Version gelesen. Wenn nur ein ID3 1.0-Tag verfügbar ist, kann über die ID3-Eigenschaften wie id3.songname
darauf zugegriffen werden. Für ID3 2.0 ruft die id3.TITS
-Eigenschaft den Namen des Titels mithilfe des neuen Tags (TITS) ab.
Beachten Sie, dass für dieses Beispiel keine Fehlerverarbeitung geschrieben wurde, und wenn der ID3-Inhalt umfangreich ist, geht das Ergebnis möglicherweise über den anzeigbaren Bereich hinaus.
package { import flash.display.Sprite; import flash.media.Sound; import flash.net.URLRequest; import flash.media.ID3Info; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.Event; public class Sound_id3Example extends Sprite { private var snd:Sound = new Sound(); private var myTextField:TextField = new TextField(); public function Sound_id3Example() { snd.addEventListener(Event.ID3, id3Handler); snd.load(new URLRequest("mySound.mp3")); } private function id3Handler(event:Event):void { var id3:ID3Info = snd.id3; myTextField.autoSize = TextFieldAutoSize.LEFT; myTextField.border = true; myTextField.appendText("Received ID3 Info: \n"); for (var propName:String in id3) { myTextField.appendText(propName + " = " + id3[propName] + "\n"); } myTextField.appendText("\n" + "Artist: " + id3.artist + "\n"); myTextField.appendText("Song name: " + id3.songName + "\n"); myTextField.appendText("Album: " + id3.album + "\n\n"); this.addChild(myTextField); } } }
isBuffering | Eigenschaft |
isBuffering:Boolean
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Gibt den Zwischenspeicherstatus externer MP3-Dateien zurück. Wenn der Wert auf true
gesetzt ist, wird die Wiedergabe unterbrochen, während das Objekt auf weitere Daten wartet.
Implementierung
public function get isBuffering():Boolean
isURLInaccessible | Eigenschaft |
isURLInaccessible:Boolean
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10.1, AIR 2 |
Gibt an, ob die Sound.url
-Eigenschaft gekürzt wurde. Wenn isURLInaccessible
den Wert true
hat, ist der Sound.url
-Wert nur die Domäne der endgültigen URL, von der der Sound geladen wird. Die Eigenschaft wird zum Beispiel gekürzt, wenn der Sound aus http://www.adobe.com/assets/hello.mp3
geladen wird und die Sound.url
-Eigenschaft den Wert http://www.adobe.com
hat. Der Wert von isURLInaccessible
ist nur dann true
, wenn auch Folgendes zutrifft:
- Beim Laden der Sounddatei ist eine HTTP-Umleitung aufgetreten.
- Die SWF-Datei, die
Sound.load()
aufruft, stammt aus einer anderen Domäne als die endgültige URL der Sounddatei. - Die SWF-Datei, die
Sound.load()
aufruft, hat keine Zugriffsberechtigung für die Sounddatei. Zugriffsberechtigungen für die Sounddatei werden auf die gleiche Weise gewährt wie für dieSound.id3
-Eigenschaft: Richten Sie eine Richtliniendatei ein und verwenden Sie dieSoundLoaderContext.checkPolicyFile
-Eigenschaft.
Hinweis: Die isURLInaccessible
-Eigenschaft wurde für Flash Player 10.1 und AIR 2.0 hinzugefügt. Diese Eigenschaft steht jedoch SWF-Dateien aller Versionen zur Verfügung, wenn die Flash-Laufzeitumgebung dies unterstützt. Die Verwendung einiger Authoring-Tools im „strikten Modus“ führt also zu einem Kompilierungsfehler. Um diesen Fehler zu umgehen, verwenden Sie die indirekte Syntax mySound["isURLInaccessible"]
oder deaktivieren Sie den strikten Modus. Wenn Sie Flash Professional CS5 oder Flex SDK 4.1 verwenden, können Sie diese API für Laufzeitumgebungen verwenden und kompilieren, die vor Flash Player 10.1 und AIR 2 veröffentlicht wurden.
Für Anwendungsinhalte in AIR ist der Wert dieser Eigenschaft immer false
.
Implementierung
public function get isURLInaccessible():Boolean
Verwandte API-Elemente
length | Eigenschaft |
url | Eigenschaft |
url:String
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die URL, von der der Sound geladen wurde. Diese Eigenschaft kann nur auf Soundobjekte angewendet werden, die mit der Sound.load()
-Methode geladen wurden. Bei Soundobjekten, die mit einem Soundelement in der Bibliothek einer SWF-Datei verknüpft sind, ist der Wert der url
-Eigenschaft null
.
Da die endgültige URL noch nicht bekannt ist, hat die url
-Eigenschaft beim ersten Aufrufen von Sound.load()
anfänglich den Wert null
. Sobald ein open
-Ereignis über das Soundobjekt ausgelöst wurde, nimmt die url
-Eigenschaft einen anderen Wert an.
Die url
-Eigenschaft enthält die endgültige, absolute URL, von der Sound geladen wurde. Der Wert von url
entspricht in der Regel dem Wert, der an den stream
-Parameter von Sound.load()
übergeben wurde. Wenn Sie allerdings eine relative URL an Sound.load()
übergeben haben, ist der Wert der url
-Eigenschaft die absolute URL. Wird die ursprüngliche URL-Anforderung zusätzlich über einen HTTP-Server umgeleitet, entspricht der Wert der url
-Eigenschaft der endgültigen URL, über die die Sounddatei tatsächlich heruntergeladen wurde. Diese Protokollierung einer absoluten, endgültigen URL entspricht dem Verhalten von LoaderInfo.url
.
In einigen Fällen ist der Wert der url
-Eigenschaft gekürzt; weitere Informationen finden Sie im Eintrag zur isURLInaccessible
-Eigenschaft.
Implementierung
public function get url():String
Verwandte API-Elemente
Sound | () | Konstruktor |
public function Sound(stream:URLRequest = null, context:SoundLoaderContext = null)
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Erstellt ein neues Soundobjekt. Wenn Sie ein gültiges URLRequest-Objekt für den Soundkonstruktor übergeben, ruft der Konstruktor automatisch die load()
-Funktion für das Soundobjekt auf. Wenn Sie kein gültiges URLRequest-Objekt für den Soundkonstruktor übergeben, müssen Sie die load()
-Funktion für das Soundobjekt selbst aufrufen, da der Stream andernfalls nicht geladen wird.
Sobald load()
für ein Soundobjekt aufgerufen wurde, kann später keine andere Sounddatei mehr in dieses Soundobjekt geladen werden. Erstellen Sie ein neues Soundobjekt, wenn Sie eine andere Sounddatei laden möchten.
load()
die sampleData
-Ereignisprozedur verwenden, um Sound dynamisch in das Soundobjekt zu laden.
Parameter stream:URLRequest (default = null ) — Die URL, die auf eine externe MP3-Datei verweist.
| |
context:SoundLoaderContext (default = null ) — Ein optionales SoundLoader-Kontextobjekt, das die Pufferzeit (die Mindestanzahl Millisekunden, die MP3-Daten im Puffer des Soundobjekts gehalten werden) definieren kann und festlegen kann, ob die Anwendung vor dem Laden von Sound nach einer domänenübergreifenden Richtliniendatei suchen soll.
|
close | () | Methode |
public function close():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Schließt den Stream. Dadurch werden eventuelle Downloads von Daten beendet. Nach dem Aufrufen der close()
-Methode können möglicherweise keine Daten aus dem Stream gelesen werden.
Auslöser
IOError — Der Stream konnte nicht geschlossen werden, oder der Stream war nicht geöffnet.
|
Beispiel ( Verwendung dieses Beispiels )
Sound.close()
-Methode aufgerufen, wenn der Benutzer auf die Stopp-Schaltfläche klickt, und das Streaming von Sound wird gestoppt.
Im Konstruktor wird ein Textfeld für die Start- und Stopp-Schaltfläche erstellt. Wenn der Benutzer auf das Textfeld klickt, wird die Methode clickHandler()
aufgerufen. Sie verwaltet das Starten und Beenden der Sounddatei. Beachten Sie, dass abhängig von der Netzwerkgeschwindigkeit oder vom Zeitpunkt des Klicks auf die Stopp-Schaltfläche möglicherweise ein Großteil der Datei bereits geladen wurde, sodass es einen Moment dauern kann, bis die Wiedergabe beendet wird. Es wird ein try...catch
-Block verwendet, um etwaige IO-Fehler, die beim Schließen des Streams auftreten können, abzufangen. Wenn Sound zum Beispiel aus einem lokalen Verzeichnis geladen und nicht gestreamt wird, wird Fehler 2029 (Dieses URLStream-Objekt verfügt nicht über einen geöffneten Stream) erfasst.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.errors.IOError; import flash.events.IOErrorEvent; public class Sound_closeExample extends Sprite { private var snd:Sound = new Sound(); private var button:TextField = new TextField(); private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); public function Sound_closeExample() { button.x = 10; button.y = 10; button.text = "START"; button.border = true; button.background = true; button.selectable = false; button.autoSize = TextFieldAutoSize.LEFT; button.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(button); } private function clickHandler(e:MouseEvent):void { if(button.text == "START") { snd.load(req); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); button.text = "STOP"; } else if(button.text == "STOP") { try { snd.close(); button.text = "Wait for loaded stream to finish."; } catch (error:IOError) { button.text = "Couldn't close stream " + error.message; } } } private function errorHandler(event:IOErrorEvent):void { button.text = "Couldn't load the file " + event.text; } } }
extract | () | Methode |
public function extract(target:ByteArray, length:Number, startPosition:Number = -1):Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Extrahiert unformatierte Sounddaten aus einem Soundobjekt.
Diese Methode ist für Situationen gedacht, in denen Sie mit dynamisch generiertem Sound arbeiten und eine Funktion zum sampleData
-Ereignis für ein anderes Soundobjekt zuweisen. Sie können diese Methode also verwenden, um Sounddaten aus einem Soundobjekt zu extrahieren. Anschließend können Sie die Daten in das Bytearray schreiben, das ein anderes Soundobjekt zum Streamen von dynamischem Audio verwendet.
Die Audiodaten werden im Zielbytearray beginnend mit der aktuellen Position des Bytearrays abgelegt. Die Audiodaten werden immer als 44100 Hz Stereo wiedergegeben. Der Sampletyp ist ein 32-Bit-Gleitkommawert, der über ByteArray.readFloat()
in eine Zahl umgewandelt werden kann.
Parameter
target:ByteArray — Ein ByteArray-Objekt, in das die extrahierten Soundsamples platziert werden.
| |
length:Number — Die Anzahl der zu extrahierenden Soundsample. Ein Sample enthält sowohl den linken als auch den rechten Kanal, d. h. zwei 32-Bit-Gleitkommawerte.
| |
startPosition:Number (default = -1 ) — Das Sample, bei dem die Extrahierung beginnt. Wenn Sie keinen Wert angeben, beginnt der erste Aufruf für Sound.extract() am Anfang des Sounds und anschließende Aufrufe ohne Wert für startPosition erfolgen sequenziell durch die Datei.
|
Number — Die Anzahl der Samples, die in das ByteArray geschrieben werden, das im target -Parameter angegeben ist.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
extract()
-Methode der Soundklasse verwendet, um auf die Audiodaten zuzugreifen.
Die mp3-Daten werden in das sourceSnd
-Soundobjekt geladen. Wenn die Anwendung die mp3-Daten lädt, ruft sie die loaded()
-Funktion (die Ereignisprozedur für das complete
-Ereignis des sourceSnd
-Objekts) auf. Ein zweites Soundobjekt (outputSound
) wird verwendet, um das modifizierte Audio abzuspielen. Das outputSound
-Objekt hat einen sampleData
-Ereignis-Listener. Das Objekt löst also periodische sampleData
-Ereignisse aus, sobald Sie die play()
-Methode des Objekts aufrufen. Die upOctave()
-Methode gibt ein Bytearray mit auf den Quellaudiodaten basierenden modifizierten Audiodaten zurück. Sie gibt Audio zurück, das eine Oktave höher ist, indem sie jedes zweite Audiosample in den Quelldaten überspringt. Die Ereignisprozedur für das sampleData
-Ereignis schreibt das zurückgegebene Bytearray in die data
-Eigenschaft des outputSound
-Objekts. Das data
-Bytearray wird an die ausgegebenen Audiodaten für das outputSound
-Objekt angehängt.
Fügen Sie zum Testen dieses Beispiels eine text.mp3-Datei in das gleiche Verzeichnis ein, in dem sich die SWF-Datei befindet.
var sourceSnd:Sound = new Sound(); var outputSnd:Sound = new Sound(); var urlReq:URLRequest = new URLRequest("test.mp3"); sourceSnd.load(urlReq); sourceSnd.addEventListener(Event.COMPLETE, loaded); function loaded(event:Event):void { outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound); outputSnd.play(); } function processSound(event:SampleDataEvent):void { var bytes:ByteArray = new ByteArray(); sourceSnd.extract(bytes, 4096); event.data.writeBytes(upOctave(bytes)); } function upOctave(bytes:ByteArray):ByteArray { var returnBytes:ByteArray = new ByteArray(); bytes.position = 0; while(bytes.bytesAvailable > 0) { returnBytes.writeFloat(bytes.readFloat()); returnBytes.writeFloat(bytes.readFloat()); if (bytes.bytesAvailable > 0) { bytes.position += 8; } } return returnBytes; }
load | () | Methode |
public function load(stream:URLRequest, context:SoundLoaderContext = null):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Initiiert den Ladevorgang einer externen MP3-Datei von der angegebenen URL. Wenn Sie ein gültiges URLRequest-Objekt für den Soundkonstruktor übergeben, wird Sound.load()
automatisch aufgerufen. Sie müssen Sound.load()
nur aufrufen, wenn Sie kein gültiges URLRequest-Objekt oder den Wert null
für den Soundkonstruktor übergeben.
Sobald load()
für ein Soundobjekt aufgerufen wurde, kann später keine andere Sounddatei mehr in dieses Soundobjekt geladen werden. Erstellen Sie ein neues Soundobjekt, wenn Sie eine andere Sounddatei laden möchten.
Beachten Sie bei Verwendung dieser Methode das folgende Sicherheitsmodell von:
- Der Aufruf von
Sound.load()
ist nicht zulässig, wenn sich die aufrufende Datei in der lokalen Sandbox des Dateisystems und sich der Sound in einer Netzwerk-Sandbox befindet. - Zum Aufrufen der lokal vertrauenswürdigen Sandbox oder der lokalen Sandbox mit Netzwerkzugang sind Zugriffsrechte von einer Website über eine URL-Richtliniendatei erforderlich.
- Eine Verbindung mit normalerweise reservierten Ports ist nicht möglich. Eine vollständige Liste der gesperrten Ports finden Sie unter „Beschränken von Netzwerk-APIs“ im ActionScript 3.0 Entwicklerhandbuch.
- Sie können eine SWF-Datei daran hindern, diese Methode aufzurufen, indem Sie auf der HTML-Seite, die den SWF-Inhalt enthält, den Parameter
allowNetworking
derobject
- undembed
-Tags festlegen.
Wenn Sie in Flash Player 10 oder höher einen Multipart-Content-Type verwenden (z. B. „multipart/form-data“), der einen Upload enthält (gekennzeichnet durch einen „filename“-Parameter in einem „content-disposition“-Header innerhalb des POST-Body), so unterliegt die POST-Methode den Sicherheitsregeln für Uploads:
- Der POST-Vorgang muss als Reaktion auf eine durch den Benutzer initiierte Aktion, z. B. Mausklick oder Tastendruck, erfolgen.
- Ist die POST-Methode domänenübergreifend (das POST-Ziel befindet sich auf einem anderen Server als die SWF-Datei, die die POST-Anforderung sendet), so muss der Zielserver eine URL-Richtliniendatei bereitstellen, die den domänenübergreifenden Zugriff erlaubt.
Für alle mehrteiligen Content-Typen muss ebenfalls die Syntax nach Standard RFC2046 gültig sein. Scheint die Syntax ungültig zu sein, so unterliegt die POST-Methode den Sicherheitsregeln für Uploads.
In Adobe AIR unterliegt Inhalt in der Sicherheitssandbox der Anwendung
(Inhalt, der mit der AIR-Anwendung installiert wird) jedoch nicht diesen Sicherheitseinschränkungen.
Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.
Parameter
stream:URLRequest — Eine URL, die auf eine externe MP3-Datei verweist.
| |
context:SoundLoaderContext (default = null ) — Ein optionales SoundLoader-Kontextobjekt, das die Pufferzeit (die Mindestanzahl Millisekunden, die MP3-Daten im Puffer des Soundobjekts gehalten werden) definieren kann und festlegen kann, ob die Anwendung vor dem Laden von Sound nach einer domänenübergreifenden Richtliniendatei suchen soll.
|
Auslöser
IOError — Der Ladevorgang ist aufgrund eines Netzwerkfehlers fehlgeschlagen.
| |
SecurityError — Über lokale nicht vertrauenswürdige Dateien kann keine Verbindung mit dem Internet hergestellt werden. Sie können dies umgehen, indem Sie diese Datei als lokal mit Netzwerkzugang oder als vertrauenswürdig klassifizieren.
| |
SecurityError — Eine Verbindung mit normalerweise reservierten Ports ist nicht möglich. Eine vollständige Liste der gesperrten Ports finden Sie unter „Beschränken von Netzwerk-APIs“ im ActionScript 3.0 Entwicklerhandbuch.
| |
IOError — Die digest -Eigenschaft des stream -Objekts ist nicht null . Sie sollten die digest -Eigenschaft eines URLRequest-Objekts nur setzen, wenn Sie beim Laden einer SWZ-Datei (einer Adobe-Plattformkomponente) die URLLoader.load() -Methode aufrufen.
|
Beispiel ( Verwendung dieses Beispiels )
Im Konstruktor wird ein URLRequest
-Objekt erstellt, um den Speicherort der Sounddatei, eines Podcasts von Adobe, zu bestimmen. Die Datei wird in einen try...catch
-Block geladen, um Fehler abzufangen, die möglicherweise beim Laden der Datei auftreten. Wenn ein IO-Fehler auftritt, wird die errorHandler()
-Methode ebenfalls aufgerufen, und die Fehlermeldung wird in das Textfeld geschrieben, das für den Fortschrittsbericht vorgesehen ist. Während des Ladevorgangs wird ein ProgressEvent.PROGRESS
-Ereignis ausgelöst und die progressHandler()
-Methode wird aufgerufen. Hier wird das ProgressEvent.PROGRESS
-Ereignis als Timer für die Berechnung des Ladevorgangs verwendet.
Die progressHandler()
-Methode teilt den bytesLoaded
-Wert, der mit dem ProgressEvent
-Objekt übergeben wird, durch den bytesTotal
-Wert, um den Prozentwert der bereits geladenen Sounddaten zu ermitteln. Danach werden diese Werte im Textfeld angezeigt. (Beachten Sie, dass für den Fall, dass die Datei klein ist, im Cache gespeichert ist oder sich im lokalen Verzeichnis befindet, der Fortschritt möglicherweise nicht bemerkbar ist.)
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.ProgressEvent; import flash.events.IOErrorEvent; public class Sound_loadExample extends Sprite { private var snd:Sound = new Sound(); private var statusTextField:TextField = new TextField(); public function Sound_loadExample(){ statusTextField.autoSize = TextFieldAutoSize.LEFT; var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); try { snd.load(req); snd.play(); } catch (err:Error) { trace(err.message); } snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); snd.addEventListener(ProgressEvent.PROGRESS, progressHandler); this.addChild(statusTextField); } private function progressHandler(event:ProgressEvent):void { var loadTime:Number = event.bytesLoaded / event.bytesTotal; var LoadPercent:uint = Math.round(100 * loadTime); statusTextField.text = "Sound file's size in bytes: " + event.bytesTotal + "\n" + "Bytes being loaded: " + event.bytesLoaded + "\n" + "Percentage of sound file that is loaded " + LoadPercent + "%.\n"; } private function errorHandler(errorEvent:IOErrorEvent):void { statusTextField.text = "The sound could not be loaded: " + errorEvent.text; } } }
loadCompressedDataFromByteArray | () | Methode |
public function loadCompressedDataFromByteArray(bytes:ByteArray, bytesLength:uint):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 3, Flash Player 11 |
lädt MP3-Sounddaten aus einem ByteArray-Objekt in ein Sound-Objekt. Die Daten werden aus der aktuellen ByteArray-Position gelesen und verlassen die ByteArray-Position am Ende der angegebenen Bytelänge, nachdem dies abgeschlossen ist. Wenn die MP3-Sounddaten ID3-Daten enthält, werden während dieses Funktionsaufrufs ID3-Ereignisse abgesetzt. Diese Funktion gibt keine Ausnahme aus, wenn das ByteArray-Objekt nicht genügend Daten enthält.
Parameter
bytes:ByteArray | |
bytesLength:uint |
loadPCMFromByteArray | () | Methode |
public function loadPCMFromByteArray(bytes:ByteArray, samples:uint, format:String = "float", stereo:Boolean = true, sampleRate:Number = 44100.0):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 3, Flash Player 11 |
Lädt PCM 32-Bit-Gleitkomma-Sounddaten aus einem ByteArray-Objekt in ein Sound-Objekt. Die Daten werden von der aktuellen ByteArray-Position gelesen und verlassen nach Abschluss dieses Vorgangs die ByteArray-Position am Ende der angegebenen Samplelänge multipliziert mit 1 Kanal oder 2 Kanälen, falls das Stereo-Flag gesetzt wurde.
Ab Flash Player 11.8 ist die Menge an Audiodaten, die an diese Funktion übergeben werden, eingeschränkt. Für SWF-Versionen >= 21 gibt diese Funktion eine Ausnahme aus, wenn die Menge an Audiodaten, die an diese Funktion übergeben werden, mehr als 1800 Sekunden beträgt. Das heißt, samples / sampleRate sollten kleiner als oder gleich 1800 sein. Für die SWF-Versionen < 21 schlägt die Laufzeit ohne weitere Meldung fehl, wenn die Menge an weitergeleiteten Audiodaten mehr als 12000 Sekunden beträgt. Dies wird nur für Abwärtskompatibilität bereitgestellt.
Diese Funktion gibt keine Ausnahme aus, wenn das ByteArray-Objekt nicht genügend Daten enthält.
Parameter
bytes:ByteArray | |
samples:uint | |
format:String (default = "float ")
| |
stereo:Boolean (default = true )
| |
sampleRate:Number (default = 44100.0 )
|
play | () | Methode |
public function play(startTime:Number = 0, loops:int = 0, sndTransform:flash.media:SoundTransform = null):SoundChannel
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Erstellt ein neues SoundChannel-Objekt zur Wiedergabe von Sound. Diese Methode gibt ein SoundChannel-Objekt zurück, auf das Sie zum Beenden von Sound und zum Überwachen der Lautstärke zugreifen können. (Greifen Sie zum Steuern von Lautstärke, Schwenkung und Balance auf das SoundTransform-Objekt zu, das dem Soundkanal zugewiesen ist.)
Parameter
startTime:Number (default = 0 ) — Die ursprüngliche Position in Millisekunden, ab der die Wiedergabe gestartet werden soll.
| |
loops:int (default = 0 ) — Definiert, wie oft Sound als Schleife vom Wert startTime aus wiedergegeben wird, bevor die Wiedergabe im Soundkanal beendet wird.
| |
sndTransform:flash.media:SoundTransform (default = null ) — Das ursprüngliche SoundTransform-Objekt, das dem Soundkanal zugewiesen wurde.
|
SoundChannel — Ein SoundChannel-Objekt, über das der Sound gesteuert werden kann. Wenn Sie über keine Soundkarte verfügen oder keine Soundkanäle mehr vorhanden sind, gibt diese Methode null zurück. Die maximale Anzahl der gleichzeitig verfügbaren Soundkanäle ist 32.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
Der Konstruktor ruft die Sound.load()
-Methode auf, mit dem Laden der Sounddaten zu beginnen. Als Nächstes wird die Sound.play()
-Methode aufgerufen, die mit dem Abspielen von Sound beginnt, sobald genügend Daten geladen wurden. Die Sound.play()
-Methode gibt ein SoundChannel-Objekt zurück, das zur Steuerung der Soundwiedergabe verwendet werden kann. Im Textfeld werden die Anweisungen angezeigt. Um sicherzustellen, dass der Inhalt bis zu dem Punkt, ab dem der Benutzer den Sound abspielen möchte, bereits geladen wurde, wird das Sprite-Objekt bar
erstellt und angezeigt, nachdem die Datei geladen wurde. Wenn die Datei erfolgreich geladen wurde, wird ein Event.COMPLETE
-Ereignis ausgelöst, welches die Methode completeHandler()
auslöst. Die completeHandler()
-Methode erstellt dann den Balken und fügt ihn der Anzeigeliste hinzu. (Anstelle eines Shape-Objekts wird ein Sprite-Objekt verwendet, um Interaktivität zu unterstützen.) Wenn der Benutzer auf den Balken klickt, wird die clickHandler()
-Methode ausgelöst.
In der clickHandler()
-Methode wird die Position der x-Koordinate des Benutzerklicks, event.localX
, verwendet, um festzustellen, an welcher Stelle der Benutzer mit dem Abspielen der Datei beginnen möchte. Da der Balken 100 Pixel groß ist und bei der x-Koordinate 100 Pixel beginnt, ist es einfach, den Prozentwert der Position festzustellen. Da die Datei geladen wurde, hat der Wert der length
-Eigenschaft der Sounddatei die Länge der gesamten Datei in Millisekunden. Anhand der Länge der Sounddatei und der Position in der Linie wird eine Startposition der Sounddatei bestimmt. Nach dem Stoppen des Sounds wird die Sounddatei an der ausgewählten Startposition neu gestartet, die als startTime
-Parameter an die play()
-Methode übergeben wird.
package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.MouseEvent; import flash.media.Sound;; import flash.net.URLRequest; import flash.media.SoundChannel; import flash.events.ProgressEvent; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.IOErrorEvent; public class Sound_playExample1 extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel = new SoundChannel(); private var infoTextField:TextField = new TextField(); public function Sound_playExample1() { var req:URLRequest = new URLRequest("MySound.mp3"); infoTextField.autoSize = TextFieldAutoSize.LEFT; infoTextField.text = "Please wait for the file to be loaded.\n" + "Then select from the bar to decide where the file should start."; snd.load(req); channel = snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); snd.addEventListener(Event.COMPLETE, completeHandler); this.addChild(infoTextField); } private function completeHandler(event:Event):void { infoTextField.text = "File is ready."; var bar:Sprite = new Sprite(); bar.graphics.lineStyle(5, 0xFF0000); bar.graphics.moveTo(100, 100); bar.graphics.lineTo(200, 100); bar.addEventListener(MouseEvent.CLICK, clickHandler); this.addChild(bar); } private function clickHandler(event:MouseEvent):void { var position:uint = event.localX; var percent:uint = Math.round(position) - 100; var cue:uint = (percent / 100) * snd.length; channel.stop(); channel = snd.play(cue); } private function errorHandler(errorEvent:IOErrorEvent):void { infoTextField.text = "The sound could not be loaded: " + errorEvent.text; } } }
Im Konstruktor wird der Sound geladen und es wird ein einfaches rechteckiges Sprite-Objekt, button
, erstellt. (Anstelle eines Shape-Objekts wird ein Sprite-Objekt verwendet, um Interaktivität zu unterstützen.) (Hier wird davon ausgegangen, dass sich die Sounddatei im selben Verzeichnis wie die SWF-Datei befindet). (Für dieses Beispiel wurde keine Fehlerverarbeitung geschrieben.)
Zwei Ereignis-Listener werden eingerichtet, um auf einfache Mausklicks und auf Doppelklicks zu warten. Wenn der Benutzer ein Mal klickt, wird die clickHandler()
-Methode, die den Sound abspielt, aufgerufen. Wenn der Benutzer auf die Schaltfläche doppelklickt, wird die doubleClickHandler()
-Methode, die die Sounddatei zwei Mal abspielt, aufgerufen. Das zweite Argument der play()
-Methode wird auf 1
gesetzt, was bedeutet, dass die Wiedergabe nach dem ersten Abspielen bei der Startzeit des Sounds erneut beginnt. Die Startzeit, das erste Argument, wird auf 0
gesetzt, was bedeutet, dass die Datei ab dem Anfang abgespielt wird.
package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.media.Sound; import flash.net.URLRequest; public class Sound_playExample2 extends Sprite { private var button:Sprite = new Sprite(); private var snd:Sound = new Sound(); public function Sound_playExample2() { var req:URLRequest = new URLRequest("click.mp3"); snd.load(req); button.graphics.beginFill(0x00FF00); button.graphics.drawRect(10, 10, 50, 30); button.graphics.endFill(); button.addEventListener(MouseEvent.CLICK, clickHandler); button.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler); this.addChild(button); } private function clickHandler(event:MouseEvent):void { snd.play(); } private function doubleClickHandler(event:MouseEvent):void { snd.play(0, 2); } } }
Die Datei wird im Konstruktor in einen try...catch
-Block geladen, um Fehler abzufangen, die möglicherweise beim Laden der Datei auftreten. Dem Soundobjekt wird ein Listener hinzugefügt, der auf ein IOErrorEvent
-Ereignis reagiert, indem die errorHandler()
-Methode aufgerufen wird. Für die Hauptanwendung wird ein weiterer Listener hinzugefügt, der auf ein Event.ENTER_FRAME
-Ereignis reagiert, das als Zeitgeber für die Anzeige des Abspielfortschritts verwendet wird. Schließlich wird ein dritter Listener für den Soundkanal hinzugefügt, der auf ein iEvent.SOUND_COMPLETE
-Ereignis reagiert (wenn die Sounddatei vollständig abgespielt wurde), indem er die soundCompleteHandler()
-Methode aufruft. Die soundCompleteHandler()
-Methode entfernt auch den Ereignis-Listener für das Event.ENTER_FRAME
-Ereignis.
Die enterFrameHandler()
-Methode teilt den bytesLoaded
-Wert, der mit dem ProgressEvent
-Objekt übergeben wird, durch den bytesTotal
-Wert, um den Prozentwert der Sounddaten, die geladen wurden, zu bestimmen. Der Prozentwert der Sounddaten, die abgespielt wurden, kann ermittelt werden, indem der Wert der position
-Eigenschaft des Soundkanals durch die Länge der Sounddaten geteilt wird. Wenn die Sounddaten jedoch nicht vollständig geladen wurden, zeigt die length
-Eigenschaft des Soundobjekts nur die Größe der zurzeit geladenen Daten an. Eine Schätzung der endgültigen Größe der Sounddatei wird berechnet, indem der Wert der length
-Eigenschaft des aktuellen Soundobjekts durch den Wert der bytesLoaded
-Eigenschaft geteilt durch den Wert der bytesTotal
-Eigenschaft geteilt wird.
Beachten Sie, dass für den Fall, dass die Datei klein ist, im Cache gespeichert ist oder sich im lokalen Verzeichnis befindet, der Ladefortschritt möglicherweise nicht bemerkbar ist. Die Verzögerung zwischen dem Beginn des Ladevorgangs der Sounddaten und dem Beginn der Wiedergabe der geladenen Daten wird bestimmt durch den Wert der SoundLoaderContext.buffertime
-Eigenschaft, der standardmäßig 1000 Millisekunden beträgt und zurückgesetzt werden kann.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundChannel; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.Event; import flash.events.IOErrorEvent; public class Sound_playExample3 extends Sprite { private var snd:Sound = new Sound(); private var channel:SoundChannel; private var statusTextField:TextField = new TextField(); public function Sound_playExample3(){ statusTextField.autoSize = TextFieldAutoSize.LEFT; var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); try { snd.load(req); channel = snd.play(); } catch (err:Error) { trace(err.message); } snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); this.addChild(statusTextField); } private function enterFrameHandler(event:Event):void { var loadTime:Number = snd.bytesLoaded / snd.bytesTotal; var loadPercent:uint = Math.round(100 * loadTime); var estimatedLength:int = Math.ceil(snd.length / (loadTime)); var playbackPercent:uint = Math.round(100 * (channel.position / estimatedLength)); statusTextField.text = "Sound file's size is " + snd.bytesTotal + " bytes.\n" + "Bytes being loaded: " + snd.bytesLoaded + "\n" + "Percentage of sound file that is loaded " + loadPercent + "%.\n" + "Sound playback is " + playbackPercent + "% complete."; } private function errorHandler(errorEvent:IOErrorEvent):void { statusTextField.text = "The sound could not be loaded: " + errorEvent.text; } private function soundCompleteHandler(event:Event):void { statusTextField.text = "The sound has finished playing."; removeEventListener(Event.ENTER_FRAME, enterFrameHandler); } } }
complete | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event.COMPLETE
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wird nach dem erfolgreichen Laden von Daten ausgelöst.
DieEvent.COMPLETE
-Konstante definiert den Wert der type
-Eigenschaft eines complete
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Das Netzwerkobjekt, dessen Ladevorgang beendet ist. |
Verwandte API-Elemente
id3 | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event.ID3
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wird durch ein Soundobjekt ausgelöst, wenn ID3-Daten für MP3-Sound verfügbar sind.
DieEvent.ID3
-Konstante definiert den Wert der type
-Eigenschaft eines id3
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Das Sound-Objekt, über das die MP3-Datei geladen wird, für die nun ID3-Daten verfügbar sind. Das unter target angegebene Ziel ist nicht immer das Objekt in der Anzeigeliste, in der der Ereignis-Listener registriert wurde. Mit der Eigenschaft currentTarget können Sie auf das Objekt in der Anzeigeliste zugreifen, das das Ereignis derzeit verarbeitet. |
Verwandte API-Elemente
ioError | Ereignis |
flash.events.IOErrorEvent
Eigenschaft IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wird beim Auftreten eines I/O-Fehlers ausgelöst, durch den der Ladevorgang fehlschlägt.
Definiert den Wert der Eigenschafttype
eines ioError
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
errorID | Die Referenznummer des spezifischen Fehlers (nur AIR). |
target | Das Netzwerkobjekt, bei dem der Eingabe/Ausgabe-Fehler auftritt. |
text | Der als Fehlermeldung anzuzeigende Text. |
Verwandte API-Elemente
open | Ereignis |
flash.events.Event
Eigenschaft Event.type =
flash.events.Event.OPEN
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wird beim Start eines Ladevorgangs ausgelöst.
DieEvent.OPEN
-Konstante definiert den Wert der type
-Eigenschaft eines open
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Das Netzwerkobjekt, über das eine Verbindung geöffnet wurde. |
Verwandte API-Elemente
progress | Ereignis |
flash.events.ProgressEvent
Eigenschaft ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wird ausgelöst, wenn während eines Ladevorgangs Daten empfangen werden.
Definiert den Wert der Eigenschafttype
eines progress
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
bytesLoaded | Die Anzahl der geladenen Elemente oder Byte zu dem Zeitpunkt, zu dem der Listener das Ereignis verarbeitet. |
bytesTotal | Die Gesamtanzahl der Elemente oder Byte, die bei einem erfolgreichen Ladevorgang schließlich geladen werden. |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
target | Das Objekt, dessen Fortschritt protokolliert wird. |
Verwandte API-Elemente
sampleData | Ereignis |
flash.events.SampleDataEvent
Eigenschaft SampleDataEvent.type =
flash.events.SampleDataEvent.SAMPLE_DATA
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5 |
Wird abgesetzt, wenn die Laufzeitumgebung neue Audiodaten anfordert.
Definiert den Wert dertype
-Eigenschaft eines SampleDataEvent
-Ereignisobjekts.
Dieses Ereignis verfügt über die folgenden Eigenschaften:
Eigenschaft | Wert |
---|---|
bubbles | false |
cancelable | false . Es gibt kein Standardverhalten, das abgebrochen werden kann. |
position | Der Speicherort, an dem die Audiodaten bereitgestellt sind. |
Beispiel ( Verwendung dieses Beispiels )
var mySound:Sound = new Sound(); function sineWaveGenerator(event:SampleDataEvent):void { for ( var c:int=0; c<8192; c++ ) { event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); event.data.writeFloat(Math.sin((Number(c+event.position)/Math.PI/2))*0.25); } } mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,sineWaveGenerator); mySound.play();
Verwandte API-Elemente
package { import flash.display.Sprite; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; public class SoundExample extends Sprite { private var url:String = "MySound.mp3"; private var song:SoundChannel; public function SoundExample() { var request:URLRequest = new URLRequest(url); var soundFactory:Sound = new Sound(); soundFactory.addEventListener(Event.COMPLETE, completeHandler); soundFactory.addEventListener(Event.ID3, id3Handler); soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler); soundFactory.load(request); song = soundFactory.play(); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function id3Handler(event:Event):void { trace("id3Handler: " + event); } private function ioErrorHandler(event:Event):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: " + event); } } }
Tue Jun 12 2018, 10:04 AM Z