von aurélien da campo (adolio)
Gehen Sie zum Demo -Ordner, konfigurieren Sie das Projekt und führen Sie es aus, oder wenn Sie die neueste Version erhalten, sollte die Demo -Binärin im Archiv verfügbar sein.
Hauptklasse zum Registrieren von Tracks und Instanziierung von Sounds. Das folgende Beispiel registriert zwei Tracks (MP3 & WAV), richtet die Optionen zur Trimm- und Abtastung ein. Dann werden drei Geräusche instanziiert.
// Embedded sounds (Note that WAV files requires a mime type)
[ Embed( source = "../media/sound/engine.mp3" ) ] public static const EngineSoundMp3 : Class ;
[ Embed( source = "../media/sound/engine.wav" , mimeType = "application/octet-stream" ) ] public static const EngineSoundWav : Class ;
private var _soundManager : SoundManager ;
public function SoundManagerExample()
{
// Create Sound Manager
_soundManager = new SoundManager();
_soundManager.maxChannelCapacity = 8; // Limit number of simultaneous playing sounds (for this sound manager only)
_soundManager.isPoolingEnabled = true; // Enable pooling to re-used already instantiated sounds and reduce GC impacts
// Register sounds
var engineSoundMp3Config:TrackConfiguration = _soundManager.registerTrack( "Engine 1" , new Mp3Track(new EngineSoundMp3())); // Register a MP3 track
var engineSoundWavConfig:TrackConfiguration = _soundManager.registerTrack( "Engine 2" , new WavTrack(new EngineSoundWav())); // Register a WAV track
// Trimming configuration
engineSoundMp3Config.findTrim(0.01); // Find start & end trim durations to remove silences inherent to mp3 format (with a silent threshold of 0.01)
// Sampling rate configuration
engineSoundWavConfig.sampling = 4096; // This defines how much samples are read per sampling request. The value must be between 2048 (included) and 8192 (included).
// Base volume configuration for mastering
engineSoundMp3Config.baseVolume = 0.5; // Custom mastering at track configuration level, the sound can now be player at 1.0 but will still be influenced by this mastering.
// Play sounds
var engine1_once:SoundInstance = _soundManager.play( "Engine 1" , 1.0); // Play once
var engine1_twice:SoundInstance = _soundManager.play( "Engine 1" , 1.0, 0, 1); // Play twice (repeat once)
var engine2_infinite:SoundInstance = _soundManager.play( "Engine 2" , 1.0, 0, -1); // Play infinite
// Control master volume
_soundManager.volume = 0.8;
}Instanz eines Klangs, der kontrolliert werden kann. Das folgende Beispiel zeigt, wie man Sound -Ereignisse anhört, wie man einen Sound steuert und wie man verschiedene Informationen dazu bekommt.
var si : SoundInstance = _soundManager . play ( "Engine 1" , 1.0 , 1337 , 5 ) ; // Play at max volume, starting at 1,337 sec., 6 times (looping 5 times)
//-----------------------------------------------------------------------------
//-- Events
//-----------------------------------------------------------------------------
si . started . add ( function (si : SoundInstance) : void { trace( "Sound started. " + si.type); } ) ;
si . stopped . add ( function (si : SoundInstance) : void { trace( "Sound stopped. " + si.type); } ) ;
si . paused . add ( function (si : SoundInstance) : void { trace( "Sound paused. " + si.type); } ) ;
si . resumed . add ( function (si : SoundInstance) : void { trace( "Sound resumed. " + si.type); } ) ;
si . completed . add ( function (si : SoundInstance) : void { trace( "Sound completed. " + si.type); } ) ;
si . destroyed . add ( function (si : SoundInstance) : void { trace( "Sound destroyed. " + si.type); } ) ;
//-----------------------------------------------------------------------------
//-- Controls
//-----------------------------------------------------------------------------
// Execution controls
si . pause () ;
si . resume () ;
si . stop () ;
si . play ( 0.5 , 0 , 1.0 ) ; // (Re)play twice (repeat once)
// Position
si . position = 1337 ; // In milliseconds
si . positionRatio = 0.5 ; // This includes the loops so here it will play only the second loop!
// Mute
si . isMuted = true ;
si . isMuted = false ;
// Volume
si . volume = 0 ;
si . volume = 0.8 ;
// Pan
si . pan = - 0.5 ; // Half left
// Pitch
si . pitch = 0.8 ; // 20% slower
si . pitch = 1.2 ; // 20% faster
si . pitch = 1.0 ; // Back to default
//-----------------------------------------------------------------------------
//-- Status info
//-----------------------------------------------------------------------------
trace ( "Type: " + si . type ) ; // Type
trace ( "Volume: " + si . volume ) ; // Volume
trace ( "Mixed volume: " + si . mixedVolume) ; // Equals to _soundManager.volume * volume
trace ( "Pan: " + si . pan ) ; // Pan
trace ( "Pitch: " + si . pitch) ; // Pitch
trace ( "Sound length: " + si . length ) ; // One loop length in milliseconds (trimmed)
trace ( "Sound total length: " + si . totalLength) ; // Total length in milliseconds (including loops & trim durations)
trace ( "Loops: " + si . loops ) ; // Total loops
trace ( "Current loop: " + si . currentLoop) ; // Current loop (-1 = infinite, 0 = first play, 1 = second play, etc.)
trace ( "Remaining loops: " + si . loopsRemaining) ; // Remaining loops
trace ( "Remaining time: " + si . remainingTime) ; // Remaining time in milliseconds
trace ( "Current position: " + si . position ) ; // Current position in milliseconds
trace ( "Current position (ratio): " + si . positionRatio) ; // Current position (ratio, between 0..1)
trace ( "Is started: " + si . isStarted) ; // Is started?
trace ( "Is playing: " + si . isPlaying ) ; // Is playing?
trace ( "Is paused: " + si . isPaused) ; // Is paused?
trace ( "Is muted: " + si . isMuted) ; // Is muted?
trace ( "Is destroyed: " + si . isDestroyed) ; // Is destroyed? Das Pooling kann den Speicherverbrauch erheblich reduzieren, indem bereits instanziierte Sound Instances wieder verwendet werden. Dies sollte auch Verzögerungen minimieren, die durch den Durchgang Garbage Collector verursacht werden. Daher kann diese Fähigkeit ziemlich nützlich sein, wenn Sie in Ihrer Anwendung viele identische Geräusche spielen (z. B. Fußstapfen des Spielers, Pfeile, die von einer Armee von Bogenschützen usw. geworfen werden).
Die Pooling -Fähigkeit kann auf diese Weise aktiviert werden:
_soundManager . isPoolingEnabled = true ; Wichtig : Wenn eine Sound Instance abgeschlossen ist, wird sie automatisch in den Pool zurückgegeben. Hüten Sie sich davor, Hinweise auf abgeschlossene Sound Instances zu behalten, da sie möglicherweise bald woanders wiederverwendet werden.
Unendliche Schleifenklänge (z. B. nahtlose Looping -Sounds) können manuell zum Pool zurückgegeben werden, indem die folgende Methode aufgerufen wird:
_soundManager . releaseSoundInstanceToPool(mySound) ; Wichtig : Zerstören Sie niemals Sound Instances wenn die Pooling -Fähigkeit aktiv ist. Dadurch wird die Objekte Recyclingmechanismus unterbrochen.
TrackConfiguration.findTrim() zu konfigurieren.src -Ordner in Ihren classpath hinzu oder kopieren Sie den Inhalt des src -Ordners in Ihrem Quellordner.oder
.swc -Datei.Vergessen Sie nicht, Abhängigkeiten einzubeziehen (siehe unten).
libs enthalten)