بقلم أوريلين دا كامبو (أدوليو)
انتقل إلى المجلد التجريبي ، وقم بتكوين المشروع وقم بتشغيله أو إذا حصلت على أحدث إصدار ، فيجب أن يكون العرض التجريبي متاحًا في الأرشيف.
الفصل الرئيسي لتسجيل المسارات والأصوات على إنشاء مثيل. يسجل المثال التالي مسارين (MP3 & WAV) ، ويقوم بإعداد خيارات التشذيب والأخذ في أخذ العينات. ثم يتم إنشاء ثلاثة أصوات.
// 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;
}مثيل صوت يمكن التحكم فيه. يوضح المثال التالي كيفية الاستماع إلى الأحداث الصوتية ، وكيفية التحكم في الصوت وكيفية الحصول على معلومات مختلفة عنها.
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? يمكن أن يقلل التجميع بشكل كبير من استهلاك الذاكرة عن طريق إعادة استخدام Sound Instances التي تم تسويتها بالفعل. هذا يجب أن يقلل أيضًا من التأخيرات الناجمة عن مرور Garbage Collector . لذلك يمكن أن تكون هذه الإمكانية مفيدة جدًا عند لعب الكثير من الأصوات المتطابقة في طلبك (مثل خطى اللاعب ، والسهام التي ألقاها جيش من الرماة ، وما إلى ذلك).
يمكن تمكين قدرة التجميع بهذه الطريقة:
_soundManager . isPoolingEnabled = true ; هام : عند اكتمال Sound Instance ، سيتم إرجاعه تلقائيًا إلى حمام السباحة. احذر من عدم الحفاظ على الإشارات إلى Sound Instances المكتملة لأنه قد يتم إعادة استخدامها قريبًا في مكان آخر.
يمكن إرجاع أصوات الحلقات اللانهائية (مثل أصوات الحلقات السلس) يدويًا إلى المسبح عن طريق استدعاء الطريقة التالية:
_soundManager . releaseSoundInstanceToPool(mySound) ; هام : لا تدمر أبدًا Sound Instances عندما تكون قدرة التجميع نشطة. هذا سيؤدي إلى كسر آلية إعادة التدوير الكائنات.
TrackConfiguration.findTrim() .src في classpath الخاص بك أو نسخ لصق محتوى مجلد src في مجلد المصدر الخاص بك.أو
.swc المتوفر في كل إصدار.لا تنس تضمين التبعيات (انظر أدناه).
libs )