Paket | flash.media |
Klasse | public final class SoundMixer |
Vererbung | SoundMixer Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
sampleData
-Ereignis abgesetzt werden).
Eigenschaft | Definiert von | ||
---|---|---|---|
audioPlaybackMode : String [statisch]
Gibt den Audiowiedergabemodus aller Sound-Objekte an. | SoundMixer | ||
bufferTime : int [statisch]
Die Anzahl der Sekunden zum Laden eines eingebetteten Streamingsounds in einen Puffer vor dem Streaming. | SoundMixer | ||
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
soundTransform : flash.media:SoundTransform [statisch]
Das SoundTransform-Objekt, über das die globalen Soundeigenschaften gesteuert werden. | SoundMixer | ||
useSpeakerphoneForVoice : Boolean [statisch]
Schaltet den Telefonlautsprecher ein oder aus, wenn sich das Gerät im Sprachmodus befindet. | SoundMixer |
Methode | Definiert von | ||
---|---|---|---|
[statisch]
Gibt an, ob aufgrund der Sicherheitsbeschränkungen nicht auf Sound zugegriffen werden darf. | SoundMixer | ||
[statisch]
Erstellt einen Schnappschuss der aktuellen Schallwelle und legt ihn im angegebenen ByteArray-Objekt ab. | SoundMixer | ||
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 | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
[statisch]
Stoppt sämtlichen derzeit wiedergegebenen Sound. | SoundMixer | ||
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 |
audioPlaybackMode | Eigenschaft |
audioPlaybackMode:String
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 3 |
Gibt den Audiowiedergabemodus aller Sound-Objekte an. Bei mobilen Geräten werden mit dieser Eigenschaft Audioprioritäten und -standardeinstellung je nach Plattformidiom festgelegt. In Desktop- und TV-Umgebungen besteht kein funktioneller Unterschied zwischen den Audiowiedergabemodi.
Die gültigen Werte für diese Eigenschaft werden in der AudioPlaybackMode-Klasse definiert.
Hinweis Wenn unter iOS eine Anwendung audioPlaybackMode=AudioPlaybackMode.VOICE
einstellt, können andere Anwendungen dies nicht zu AudioPlaybackMode.MEDIA
ändern.
Verwenden Sie den AudioPlaybackMode.VOICE
-Modus so wenig wie möglich und versuchen Sie, so schnell wie möglich in den AudioPlaybackMode.MEDIA
-Modus zu wechseln, nachdem der Sprachanruf beendet wurde, damit andere Anwendungen im Medienmodus abspielen können.
Wenn Sie den Audiowiedergabemodus unter iOS ändern, wird die Musikwiederhabe nativer Apps kurz angehalten.
Der Standardwert ist AudioPlaybackMode.MEDIA.
Implementierung
public static function get audioPlaybackMode():String
public static function set audioPlaybackMode(value:String):void
Auslöser
ArgumentError — kInvalidParameterError
|
Verwandte API-Elemente
bufferTime | Eigenschaft |
bufferTime:int
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die Anzahl der Sekunden zum Laden eines eingebetteten Streamingsounds in einen Puffer vor dem Streaming. Auf die Daten in einem geladenen Sound, einschließlich der Zwischenspeicherzeit, kann nicht von einer SWF-Datei, die sich in einer anderen Domäne befindet, zugegriffen werden, es sei denn, Sie implementieren eine Cross-Domain-Richtliniendatei. Weitere Informationen zu Sicherheit und Sound finden Sie in der Beschreibung zur Soundklasse. Auf die Daten in einem geladenen Sound, einschließlich der Zwischenspeicherzeit, kann über Code in einer anderen Domäne nur zugegriffen werden, wenn eine Cross-Domain-Richtliniendatei implementiert ist. In der Anwendungssandbox einer AIR-Anwendung kann Code jedoch auf Daten in Sounddateien aus jeder Quelle zugreifen. Weitere Informationen zu Sicherheit und Sound finden Sie in der Beschreibung zur Soundklasse.
Die SoundMixer.bufferTime
-Eigenschaft wirkt sich nur auf die Zwischenspeicherzeit für eingebetteten Streamingsound in einer SWF-Datei aus und hängt nicht von dynamisch erstellten Soundobjekten (d. h. den in ActionScript erstellten Soundobjekten) ab. Durch den Wert von SoundMixer.bufferTime
kann der Standardwert für die Zwischenspeicherzeit nicht überschrieben oder festgelegt werden, die in dem für die Sound.load()
-Methode übergebenen SoundLoaderContext-Objekt angegeben ist.
Implementierung
public static function get bufferTime():int
public static function set bufferTime(value:int):void
Verwandte API-Elemente
soundTransform | Eigenschaft |
soundTransform:flash.media:SoundTransform
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Das SoundTransform-Objekt, über das die globalen Soundeigenschaften gesteuert werden. Ein SoundTransform-Objekt enthält Eigenschaften zum Festlegen von Lautstärke, Schwenkung sowie Zuordnung von linkem und rechtem Lautsprecher. Das in dieser Eigenschaft verwendete SoundTransform-Objekt enthält endgültige Soundeinstellungen, die nach dem Anwenden der einzelnen Soundeinstellungen auf sämtliche Sounds angewendet werden.
Implementierung
public static function get soundTransform():flash.media:SoundTransform
public static function set soundTransform(value:flash.media:SoundTransform):void
Verwandte API-Elemente
useSpeakerphoneForVoice | Eigenschaft |
useSpeakerphoneForVoice:Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 3 |
Schaltet den Telefonlautsprecher ein oder aus, wenn sich das Gerät im Sprachmodus befindet. Smartphones verwenden standardmäßig den „Hörer“ des Telefons für die Audioausgabe, wenn SoundMixer.audioPlaybackMode
auf AudioPlaybackMode.VOICE
eingestellt ist. Mit der useSpeakerphoneForVoice
-Eigenschaft können Sie die Standardausgabe überschreiben, sodass Sie eine Lautsprecher-Schaltfläche in eine Telefonanwendung implementieren können. Diese Eigenschaft hat in anderen Modi als AudioPlaybackMode.VOICE
keine Auswirkungen. In Desktop- und TV-Umgebungen hat diese Eigenschaft keine Auswirkungen.
Hinweis Wenn Ihre Anwendung unter iOS audioPlaybackMode=VOICE
eingestellt hat und eine andere Anwendung auch im Sprachmodus läuft, können Sie nicht useSpeakerphoneForVoice=true
einstellen.
Hinweis: Unter Android müssen Sie die android.permission.MODIFY_AUDIO_SETTINGS
im AIR-Anwendungsdeskriptor festlegen; andernfalls hat das Ändern dieses Werts keine Auswirkungen. Die Einstellung ist eine globale Geräteeinstellung. Andere Anwendungen, die auf dem Gerät ausgeführt werden, können die eigentliche Geräteeinstellung jederzeit ändern.
Der Standardwert ist false.
Implementierung
public static function get useSpeakerphoneForVoice():Boolean
public static function set useSpeakerphoneForVoice(value:Boolean):void
Verwandte API-Elemente
areSoundsInaccessible | () | Methode |
public static function areSoundsInaccessible():Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9 |
Gibt an, ob aufgrund der Sicherheitsbeschränkungen nicht auf Sound zugegriffen werden darf. Beispielsweise kann auf Sound, der von einer anderen Domäne als der des Inhalts, der diese Methode aufruft, geladen wird, nicht zugegriffen werden, wenn der Server für den Sound keine URL-Richtliniendatei hat, die Zugriff auf diese Domäne gewährt. Sound kann zwar geladen und wiedergegeben werden, Methoden auf niedriger Ebene, z. B. Abrufen von ID3-Metadaten für Sound, können jedoch nicht durchgeführt werden.
Bei Inhalten von AIR-Anwendungen in der Sicherheitssandbox der Anwendung wird beim Aufrufen dieser Methode immer false
zurückgegeben. Alle Sounds, einschließlich der aus anderen Domänen geladenen, sind für Inhalte in der Sicherheitssandbox der Anwendung zugänglich.
Boolean — Die Stringdarstellung des booleschen Werts.
|
Verwandte API-Elemente
computeSpectrum | () | Methode |
public static function computeSpectrum(outputArray:ByteArray, FFTMode:Boolean = false, stretchFactor:int = 0):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9 |
Erstellt einen Schnappschuss der aktuellen Schallwelle und legt ihn im angegebenen ByteArray-Objekt ab. Die Werte werden als normalisierte Gleitkommawerte im Bereich zwischen -1,0 und 1,0 formatiert. Das für den outputArray
-Parameter übergebene ByteArray-Objekt wird mit den neuen Werten überschrieben. Die Größe des erstellten ByteArray-Objekts ist auf 512 Gleitkommawerte festgelegt, wobei die ersten 256 Werte den linken Kanal darstellen und die restlichen 256 Werte den rechten Kanal.
Hinweis: Diese Methode unterliegt den Sicherheitsbeschränkungen für lokale Dateien und den Beschränkungen für Cross-Domain-Ladevorgänge. Bei Verwendung lokaler Dateien oder von Sound, der über einen Server in einer anderen Domäne als die des aufrufenden Inhalts geladen wurde, müssen Sie die Sandbox-Beschränkungen möglicherweise durch eine Cross-Domain-Richtliniendatei umgehen. Weitere Informationen finden Sie in der Beschreibung zur Soundklasse. Darüber hinaus können mit dieser Methode keine Daten aus RTMP-Streams extrahiert werden, auch wenn die Methode über Inhalt aufgerufen wird, die sich in der gleichen Domäne wie der RTMP-Server befinden.
Diese Methode wird über RTMP in Flash Player 9.0.115.0 und höher und in Adobe AIR unterstützt. Sie können den Zugriff auf Streams auf Flash Media Server in einem serverseitigen Skript steuern. Weitere Informationen finden Sie in den Abschnitten zu den Eigenschaften Client.audioSampleAccess
und Client.videoSampleAccess
in Server-Side ActionScript Language Reference for Adobe Flash Media Server.
Parameter
outputArray:ByteArray — Ein ByteArray-Objekt mit den Werten, die mit dem Sound verknüpft sind. Wenn auf Sound aufgrund von Sicherheitsbeschränkungen nicht zugegriffen werden kann (areSoundsInaccessible == true ), bleibt das outputArray -Objekt unverändert. Wenn sämtlicher Sound gestoppt wird, ist das outputArray -Objekt mit Nullen gefüllt.
| |
FFTMode:Boolean (default = false ) — Ein boolescher Wert, der angibt, ob für die Sounddaten zunächst eine Fourier-Transformation durchgeführt wird. Wenn Sie diesen Parameter auf true setzen, gibt die Methode statt der unformatierten Schallwelle ein Frequenzspektrum zurück. Im Frequenzspektrum sind niedrige Frequenzen im linken Bereich und hohe Frequenzen im rechten Bereich dargestellt.
| |
stretchFactor:int (default = 0 ) — Die Auflösung der Soundsamples. Wenn Sie den stretchFactor -Wert auf 0 setzen, werden die Daten mit 44,1 KHz gesampelt, beim Wert 1 mit 22,05 KHz, beim Wert 2 mit 11,025 KHz usw.
|
Verwandte API-Elemente
flash.utils.ByteArray
flash.media.Sound
flash.media.SoundLoaderContext.checkPolicyFile
Beispiel ( Verwendung dieses Beispiels )
computeSpectrum()
-Methode eine grafische Darstellung der Soundwellendaten erzeugt.
Im Konstruktor wird eine Sounddatei geladen und für die Wiedergabe eingerichtet. (In diesem Beispiel wird keine Fehlerverarbeitung verwendet, und es wird davon ausgegangen, dass sich die Sounddatei im selben Verzeichnis befindet wie die SWF-Datei.) Im Beispiel wird auf das Ereignis Event.ENTER_FRAME
gewartet, während der Sound abgespielt wird. Dabei wird wiederholt die Methode onEnterFrame()
aufgerufen, um eine Kurve mit den Werten der Sounddaten zu zeichnen. Wenn die Wiedergabe beendet ist, stoppt die onPlaybackComplete()
-Methode das Zeichnen, indem sie den Listener für das Event.ENTER_FRAME
-Ereignis entfernt.
In der onEnterFrame()
-Methode speichert die computeSpectrum()
-Methode den unformatierten Sound im Bytearray-Objekt bytes
. Die Daten werden mit 44,1 KHz gesampelt. Der Bytearray enthält 512 Byte Daten, die jeweils einen Gleitkommawert zwischen -1 und 1 aufweisen. Die ersten 256 Werte repräsentieren den linken Kanal, die zweiten 256 den rechten Kanal. Die erste for-Schleife liest die ersten 256 Datenwerte (den linken Stereokanal) und zeichnet mithilfe der Graphics.lineTo()
-Methode eine Linie von jedem Punkt zum nächsten. (Die Vektorgrafikanzeige der Soundwelle wird direkt in das Sprite-Objekt der Klasse geschrieben.) Die Soundbyte werden als 32-Bit-Gleitkommazahl vom Bytestream gelesen und mit der Plothöhe multipliziert, um den vertikalen Bereich der Kurve aufzunehmen. Die Breite wird auf das Doppelte der Breite der Kanallänge festgelegt. Die zweite for-Schleife liest die nächsten 256 Werte (den rechten Stereokanal) und plottet die Linien in umgekehrter Reihenfolge. Die Methoden g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
und g.lineTo(0, PLOT_HEIGHT);
zeichnen die Grundlinien für die Wellen. Die resultierende Wellenform produziert einen Spiegelbildeffekt.
package { import flash.display.Sprite; import flash.display.Graphics; import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; import flash.utils.ByteArray; import flash.text.TextField; public class SoundMixer_computeSpectrumExample extends Sprite { public function SoundMixer_computeSpectrumExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("Song1.mp3"); snd.load(req); var channel:SoundChannel; channel = snd.play(); addEventListener(Event.ENTER_FRAME, onEnterFrame); channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); } private function onEnterFrame(event:Event):void { var bytes:ByteArray = new ByteArray(); const PLOT_HEIGHT:int = 200; const CHANNEL_LENGTH:int = 256; SoundMixer.computeSpectrum(bytes, false, 0); var g:Graphics = this.graphics; g.clear(); g.lineStyle(0, 0x6600CC); g.beginFill(0x6600CC); g.moveTo(0, PLOT_HEIGHT); var n:Number = 0; for (var i:int = 0; i < CHANNEL_LENGTH; i++) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); g.endFill(); g.lineStyle(0, 0xCC0066); g.beginFill(0xCC0066, 0.5); g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); for (i = CHANNEL_LENGTH; i > 0; i--) { n = (bytes.readFloat() * PLOT_HEIGHT); g.lineTo(i * 2, PLOT_HEIGHT - n); } g.lineTo(0, PLOT_HEIGHT); g.endFill(); } private function onPlaybackComplete(event:Event):void { removeEventListener(Event.ENTER_FRAME, onEnterFrame); } } }
stopAll | () | Methode |
public static function stopAll():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Stoppt sämtlichen derzeit wiedergegebenen Sound.
>In Flash Professional stoppt diese Methode den Abspielkopf nicht. Wenn der Abspielkopf Bilder erreicht, in denen Streamingsound enthalten ist, wird die Wiedergabe dieses Sounds fortgesetzt.
Beachten Sie bei Verwendung dieser Eigenschaft das folgende Sicherheitsmodell von:
- In der Standardeinstellung wird durch Aufrufen der
soundMixer.stopAll()
-Methode nur der Sound gestoppt, der sich in der gleichen Sicherheitssandbox wie das Objekt befindet, das die Methode aufruft. Sound, dessen Wiedergabe nicht über die gleiche Sandbox wie die des aufrufenden Objekts gestartet wurde, wird nicht gestoppt. - 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
setzen, wird in Flash Player oder Adobe AIR auf dem Server eine Cross-Domain-Richtliniendatei gesucht, über die der Sound geladen wird. Wenn der Server über eine Cross-Domain-Richtliniendatei verfügt und die Datei die Domäne des aufrufenden Inhalts zulässt, kann die Datei den geladenen Sound über diesoundMixer.stopAll()
-Methode stoppen. Andernfalls ist dies nicht möglich.
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.
Beispiel ( Verwendung dieses Beispiels )
stopAll()
zwei Sounds stummgeschaltet, die gleichzeitig abgespielt werden.
Im Konstruktor werden zwei unterschiedliche Sounddateien geladen und für das Abspielen eingestellt. Der erste Sound wird lokal geladen und einem Soundkanal zugewiesen. (Es wird davon ausgegangen, dass sich die Datei im selben Verzeichnis wie die SWF-Datei befindet.) Die zweite Datei wird von der Adobe-Site geladen und gestreamt. Damit die Methode SoundMixer.stopAll()
verwendet werden kann, müssen alle Sounds zugänglich sein. (Für Überprüfung der domänenübergreifenden Richtliniendatei kann ein SoundLoaderContext-Objekt verwendet werden.) Jeder Sound verfügt auch über einen Ereignis-Listener, der aufgerufen wird, wenn beim Laden der Sounddatei ein IO-Fehler auftritt. Des Weiteren wird ein Textfeld muteButton
erstellt. Es wartet auf ein Klickereignis, das die Methode muteButtonClickHandler()
aufruft.
Wenn in der muteButtonClickHandler()
-Methode der Inhalt des Textfelds „MUTE“ ist, überprüft die areSoundsInaccessible()
-Methode, ob der Soundmischer Zugriff auf die Dateien hat. Wenn auf die Dateien zugegriffen werden kann, stoppt die stopAll()
-Methode die Sounds. Bei der erneuten Auswahl des Textfelds beginnt die Wiedergabe der ersten Sounddatei, und der Inhalt des Textfelds ändert sich zu „MUTE“. Dieses Mal schaltet die Methode stopAll()
die einzige Sounddatei, die abgespielt wird, stumm. Die stop()
-Methode des Soundkanals kann auch dazu verwendet werden, einen bestimmten Sound, der dem Kanal zugewiesen ist, zu stoppen. (Dazu muss der Sound dem Kanal jedes Mal neu zugewiesen werden, wenn die play()
-Methode aufgerufen wird.)
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.events.MouseEvent; import flash.events.IOErrorEvent; public class SoundMixer_stopAllExample extends Sprite { private var firstSound:Sound = new Sound(); private var secondSound:Sound = new Sound(); private var muteButton:TextField = new TextField(); private var channel1:SoundChannel = new SoundChannel(); public function SoundMixer_stopAllExample() { firstSound.load(new URLRequest("mySound.mp3")); secondSound.load(new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3")); firstSound.addEventListener(IOErrorEvent.IO_ERROR, firstSoundErrorHandler); secondSound.addEventListener(IOErrorEvent.IO_ERROR, secondSoundErrorHandler); channel1 = firstSound.play(); secondSound.play(); muteButton.autoSize = TextFieldAutoSize.LEFT; muteButton.border = true; muteButton.background = true; muteButton.text = "MUTE"; muteButton.addEventListener(MouseEvent.CLICK, muteButtonClickHandler); this.addChild(muteButton); } private function muteButtonClickHandler(event:MouseEvent):void { if(muteButton.text == "MUTE") { if(SoundMixer.areSoundsInaccessible() == false) { SoundMixer.stopAll(); muteButton.text = "click to play only one of sound."; } else { muteButton.text = "The sounds are not accessible."; } } else { firstSound.play(); muteButton.text = "MUTE"; } } private function firstSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } private function secondSoundErrorHandler(errorEvent:IOErrorEvent):void { trace(errorEvent.text); } } }
Tue Jun 12 2018, 10:04 AM Z