/** * Ringtone * * An ActionScript 3 implementation of Ringtone player * Copyright (c) 2008 Oleg Cherniy * * License: * MIT-style license. */ package com.ria.media { import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; import flash.events.TimerEvent; import flash.utils.Timer; public class Ringtone { static public var ringTonesDir:String = './ringtones/'; private var _volume:Number; private var _volumeTo:Number; private var _volumeAmplificationInterval:int; private var _volumeStep:Number; private var _sound:Sound; private var _channel:SoundChannel; // Timer private var t:Timer; private const TIMER_INTERVAL:int = 1000; /** * Конструктор * @param fileName имя рингтон-файла (Flash 9 понимает только mp3) */ public function Ringtone(fileName:String='tone4.mp3'){ _sound = new Sound(new URLRequest(ringTonesDir + fileName)); } /** * Запуск ringtone-плеера * @param count количество повторений рингтона, 0-будет иг * @param volume с какого уровня звука (в процентах) стартовать проигрывание рингтона * @param volumeTo до какого уровня звука (в процентах) усилять звук рингтона * @param ringtoneAmplificationInterval время усиления звука (в секундах) */ public function play(count:int=0,volume:int=0,volumeTo:int=100,volumeAmplificationInterval:int=0){ _channel = _sound.play(0, count); if (volumeAmplificationInterval > 0) { _volume = volume; _volumeTo = volumeTo; _volumeAmplificationInterval = volumeAmplificationInterval; _setupTimer(); } setRingtoneValue(volume); } /** * Остановить проигрывание рингтона */ public function stop(){ _channel.stop(); } /**#@+ * По таймеру плавно усиляем силу звука рингтона */ private function _setupTimer() { _volumeStep = (_volumeTo - _volume) / _volumeAmplificationInterval; t = new Timer(TIMER_INTERVAL); t.addEventListener(TimerEvent.TIMER, _updateTimer); t.start(); } private function _updateTimer(evt:TimerEvent):void { _volume = _volume + _volumeStep; if (_volume > _volumeTo) { _volume = _volumeTo; t.stop(); } setRingtoneValue(_volume); } /** * Регулировка уровнязвука */ public function setRingtoneValue(value:Number) { var transform:SoundTransform = new SoundTransform(); transform.volume = value/100; _channel.soundTransform = transform; } } /**#@-*/ }