Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.05.2011, 11:43
POPsy вне форума Посмотреть профиль Отправить личное сообщение для POPsy Найти все сообщения от POPsy
  № 1  
Ответить с цитированием
POPsy

Регистрация: Apr 2010
Сообщений: 29
По умолчанию проблема с MP3 player'ом

сам плеер работает, но ... со временем вырастает нагрузка на процессор.
такое ощущение что какой то мувиклип не удаляется со сцены.

вот код, подскажите плз в чем трабл ?
Код AS3:
var playlist:XML = new XML();                     //создаем объект для работы с нашим плэйлистом XML ...
var loader:URLLoader = new URLLoader();         //этим будем загружать наш XML
var setPosition:int = 0;                     	//здесь будем хранить позицию воспроизведения при нажатии паузы и т.п.
var soundObj:Sound = new Sound();                 //наш основной объект для работы
var soundCha:SoundChannel = new SoundChannel(); //позволит управлять каналом воспроизведения
var soundTrans:SoundTransform = new SoundTransform(); //для звука и получания данных для аналийзера
var reqUrl:URLRequest = new URLRequest();         //для загрузки mp3 в объект Sound
var loaded:Number = 0;                             //для правильного просчитывания отображения места воспроизведения
var soundBytes:ByteArray = new ByteArray();     //для хранения данных о звуке
var arrayUrl:Array = new Array();                  //массив для адресов mp3
var arrayXm:Array = new Array();
var array:Array = new Array();                  //для хранения преобразованных данных о звуке
var volumeP:Number = 1;                         //для хранения уровня громкости звука
var volumeS:Number = 1;                         //тоже
var track:int = 0;                                 //номер текущего трэка для воспроизведения
var offmark:Boolean = false;                     //для кнопки MUTE
var xm:Number = 0;
 
//события и слушатели. основа
function initPlayMp3():void {
    Play_btn.addEventListener(MouseEvent.CLICK, startPlay);             //присвоим реакцию на клик мышки нашим элементам интерфейса
    Pause_btn.addEventListener(MouseEvent.CLICK, stopPlay);
    volume_mc.addEventListener(MouseEvent.CLICK, volumePlay);
    offVolume_btn.addEventListener(MouseEvent.CLICK, offvolumePlay);
    onVolume_btn.addEventListener(MouseEvent.CLICK, onvolumePlay);
    Next_btn.addEventListener(MouseEvent.CLICK, nextTrack);
    Prev_btn.addEventListener(MouseEvent.CLICK, prevTrack);
    Stop_btn.addEventListener(MouseEvent.CLICK, fullStop);
 
    loader.addEventListener(Event.COMPLETE, whenLoaded);         //событие вызовется когда XML фал будет загружен
    loader.load(new URLRequest("playlist.xml"));                 //а это адрес того что будем загружать
 
    volume_mc.buttonMode = true;                                //определим свойсто для нужных нам клипов что бы при наведении на них курсор менялся на руку
 
    offVolume_btn.visible = false;                                //скроем кнопки которые не нужны
    Pause_btn.visible = false;
}
 
//загрузка xml
function whenLoaded(event:Event):void {            //если загрузка XML прошла успешно то в наш массив с адресами запишем все ее содержимое
    playlist = XML(event.target.data);
    for(var i:int = 0; i < playlist.url.length(); i++) {
         arrayUrl[i] = playlist.url[i].text();
		 arrayXm[i]= playlist.Xm[i];
    }
	startVol();
}
 
 
 
//Следующий трек
function nextTrack(event:MouseEvent):void{             //Запускается когда нажата кнопка СЛЕДУЮЩИЙ ТРЕК
    Play_btn.visible = false;                         // определяем какие кнопки управления должны быть видимыми а какие нет
    Pause_btn.visible = true; 
    if((track+1)<arrayUrl.length){                     // определяем на какой трек нам переключаться
         track++;
    } else {
         track = 0;
    }
    try {                                             // пытаемся выполнить стоп и закрытие канала, если канал уже закрыт (загрузка закончилась) то оное вызовет ошибку и выполнение перейдет к catch
         soundCha.stop();
         soundObj.close();
    } catch(e:Error){
         soundCha.stop();                             // просто остановим
    }
    PlaySound();                                    // и запустим воспроизведение нового трека
}
 
//Предыдущий трек
function prevTrack(event:MouseEvent):void{             //Запускается когда нажата кнопка Предыдущий ТРЕК
    Play_btn.visible = false;                         // определяем какие кнопки управления должны быть видимыми а какие нет
    Pause_btn.visible = true; 
    if((track-1)>=0){                     // определяем на какой трек нам переключаться
         track--;
    } else {
         track = arrayUrl.length-1;
    }
    try {                                             // пытаемся выполнить стоп и закрытие канала, если канал уже закрыт (загрузка закончилась) то оное вызовет ошибку и выполнение перейдет к catch
         soundCha.stop();
         soundObj.close();
    } catch(e:Error){
         soundCha.stop();                             // просто остановим
    }
    PlaySound();                                    // и запустим воспроизведение нового трека
}
 
function fullTrack(event:Event):void{ // определяет новый трэк и переходит к нему
    Play_btn.visible = false;                         // определяем какие кнопки управления должны быть видимыми а какие нет
    Pause_btn.visible = true;
    if((track+1)<arrayUrl.length){
        track++;
    } else {
        track = 0;
    }
    soundCha.stop();
    PlaySound();
}
 
// полный стоп
function fullStop(event:MouseEvent):void{// останавливает воспроизведение и если звук открыт закрывает загрузку
    setPosition = 0;//позицию воспроизведения в ноль
    try {
        soundCha.stop();
        soundCha = soundObj.play(0);
        soundCha.stop();
        soundObj.close();
    } catch(e:Error){
        soundCha.stop();
        soundCha = soundObj.play(0);
        soundCha.stop();
    }
    Play_btn.visible = true;                         
    Pause_btn.visible = false;
}
 
//кнопка ПУСК
function startPlay(event:MouseEvent):void{
    Play_btn.visible = false;                         
    Pause_btn.visible = true;
    PlaySound(); // запускаем основную функцию воспроизведения звука
}
 
//Кнопка ПАУЗА
function stopPlay(event:MouseEvent):void{
    setPosition = soundCha.position; // запоминаем позицию воспроизведения
    volumeS = soundTrans.volume; // и уровень звука
    Play_btn.visible = true;
    Pause_btn.visible = false;
    soundCha.stop(); // останавливаем воспроизведение
}
 
//установка уровня звука
function volumePlay(event:MouseEvent):void{
    offmark = false;
    volume_mc.volumefill_mc.width = event.currentTarget.mouseX*2; // определяем куда ткнули и изменяем размер маски
    soundTrans.volume = (event.currentTarget.mouseX*2)/100; // устанавливаем громкость звука
    //trace(soundTrans.volume);
	volumeP = volumeS = soundTrans.volume;
    soundCha.soundTransform = soundTrans;
    offVolume_btn.visible = false;
    onVolume_btn.visible = true;
}
 
//включение звука
function offvolumePlay(event:MouseEvent):void{
    offmark = false;
    offVolume_btn.visible = false;
    onVolume_btn.visible = true;
    volume_mc.volumefill_mc.width = (volumeP*300)/3;
    soundTrans.volume = volumeP;
    soundCha.soundTransform = soundTrans;
}
 
function startVol():void{
    Play_btn.visible = false;                         
    Pause_btn.visible = true;
    PlaySound(); // запускаем основную функцию воспроизведения звука
}
 
//Выключение звука
function onvolumePlay(event:MouseEvent):void{
    offmark = true;
    volumeP = soundTrans.volume;
    offVolume_btn.visible = true;
    onVolume_btn.visible = false;
    volume_mc.volumefill_mc.width = 0;
    soundTrans.volume = 0;
    soundCha.soundTransform = soundTrans;
}
 
//основная ПУСК функция
function PlaySound():void{ // основная функция которая воспроизводит звук
    reqUrl.url = arrayUrl[track]; // получаем адрес трека
    var nextTitle:Sound = new Sound(reqUrl);// т.к. в один объект два звука не загрузить то мы создаем промежуточный объект загружаем в него а потом просто приравниваем основной к нему загружаем его
    soundObj = nextTitle;
    soundCha = soundObj.play(setPosition); // запускаем звук в нужном нам канале с определенной позиции
 
    soundTrans.volume = volumeS; // устанавливаем кромкость
    soundCha.soundTransform = soundTrans; // и присваиваем ее каналу нужному
    soundCha.addEventListener(Event.SOUND_COMPLETE, fullTrack); // запустит функцию меняющую трэк при достижении конца трэка текущего
 
    if(offmark){// обработка уровня громкости если включено MUTE
        soundTrans.volume = 0;
        soundCha.soundTransform = soundTrans;
    } else {
     soundTrans.volume = volumeS;
     soundCha.soundTransform = soundTrans;
    }
}
initPlayMp3();
 
var time:Timer = new Timer(150);
time.addEventListener(TimerEvent.TIMER, timerHandler);
time.start();
 
function timerHandler(event:TimerEvent):void {
	var ba:ByteArray = new ByteArray();
	SoundMixer.computeSpectrum(ba, true);
	var i:int;
	var w:int = 2;
	var t:Number = ba.readFloat();
	if(t > 0.5){
		Object(root).mc1.ml1.addd(t);
		Object(root).mc1.ml2.addd(t);
		Object(root).mc1.ml3.addd(t);
		Object(root).mc1.ml4.addd(t);
	}
}


Последний раз редактировалось POPsy; 04.05.2011 в 23:34.
Создать новую тему Ответ Часовой пояс GMT +4, время: 18:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.