Показать сообщение отдельно
Старый 01.04.2011, 21:25
Likoniko вне форума Посмотреть профиль Отправить личное сообщение для Likoniko Найти все сообщения от Likoniko
  № 4  
Ответить с цитированием
Likoniko

Регистрация: Dec 2010
Сообщений: 81
вся проблема в том что если песня загрузится, то происходит что то не понятно(как будто загружается безконечно по новой) и что начала играть песня, надо шмягнуть по дорожке.
Как мне сделать чтоб музыка начинала сразу играть (без шмягания по дорожке) и плеер не глючил.
Вот плеер, дождитесь полной загрузки или шмягните по дорожке и дождитесь загруки, тогда поймёте о чём я.
fort.lafa-game.ru/RSPlay2.swf

Добавлено через 1 минуту
код плеера
Код 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
this.progress_mc.status_mc.width= 0;// устанавливаем показатель уровня загрузки в 0
this.progress_mc.progressfill_mc.x = -200;// и показатель воспроизведения в позицию -200 что будет видется тоже как 0
var loaded:Number= 0;// для правильного просчитывания отображения места воспроизведения
var soundBytes:ByteArray= new ByteArray();// для хранения данных о звуке
var arrayUrl:Array = new Array();// массив для адресов mp3
var array:Array = new Array();// для хранения преобразованных данных о звуке
var volumeP:Number= 1;// для хранения уровня громкости звука
var volumeS:Number= 1;// тоже
var track:int= 0;// номер текущего трэка для воспроизведения
var offmark:Boolean= false;// для кнопки MUTE
//события и слушатели. основа
function initPlayMp3():void
{
	play_mc.addEventListener(MouseEvent.CLICK, startPlay);
	// присвоим реакцию на  клик мышки нашим элементам интерфейса
	stop_mc.addEventListener(MouseEvent.CLICK, stopPlay);
	volume_mc.addEventListener(MouseEvent.CLICK, volumePlay);
	progress_mc.addEventListener(MouseEvent.CLICK, progressPlay);
	offvolume_mc.addEventListener(MouseEvent.CLICK, offvolumePlay);
	onvolume_mc.addEventListener(MouseEvent.CLICK, onvolumePlay);
	nexttrack_mc.addEventListener(MouseEvent.CLICK, nextTrack);
	prevtrack_mc.addEventListener(MouseEvent.CLICK, prevTrack);
	fullstop_mc.addEventListener(MouseEvent.CLICK, fullStop);
 
	loader.addEventListener(Event.COMPLETE, whenLoaded); //событие вызовется когда XML фал будет загружен
	loader.load(new URLRequest("playlist.xml")); // а это адрес того что будем загружать
 
	play_mc.buttonMode = true; ;// определим свойсто для нужных нам клипов что бы при наведении на них курсор менялся на руку
	stop_mc.buttonMode = true;
	volume_mc.buttonMode = true;
	onvolume_mc.buttonMode = true;
	offvolume_mc.buttonMode = true;
	progress_mc.buttonMode = true;
	nexttrack_mc.buttonMode = true;
	prevtrack_mc.buttonMode = true;
	fullstop_mc.buttonMode = true;
 
 
	offvolume_mc.visible = false;// скроем кнопки которые не нужны
	stop_mc.visible = false;
 
 
	for (var i = 1; i<17; i++)
	{// расставим нужное нам колличесво шкал аналайзера
		var s;
		addChild(s = new spektr_mc as MovieClip);
		s.name = "spektr" + i + "_mc";
		s.mask0_mc.scaleY = 0;
		s.x = (i*4)+360;// здесь можно настроить позицию где они все будут появляться
		s.y = 19;//
	}
}//загрузка 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();
	}
	name_txt.text = "0" + "/" + arrayUrl.length + " Исполнитель - Название Песни";//и обновим тектовое поле добавив туда информацию о колличестве трэков
}//Прогресс загрузки 
function LoadProgress(event:ProgressEvent):void
{
	var loadedsound = Math.round(100 * (event.bytesLoaded / event.bytesTotal));// просчитываем уровень загрузки
	set_txt.text = "Загруженo: " + loadedsound + "%";// обновляем значение в тектовом поле
	progress_mc.status_mc.width = loadedsound * 2;// и  увеличиваем полоску загрузки в прогресс баре
 
 
}//Следующий трек
function nextTrack(event:MouseEvent):void
{//Запускается когда нажата кнопка СЛЕДУЮЩИЙ ТРЕК
	play_mc.visible = false;// определяем какие кнопки управления должны быть видимыми а какие нет
	stop_mc.visible = true;//
	if ((track+1)<arrayUrl.length)
	{// определяем на какой трек нам переключаться
		track++;
	}
	else
	{
		track = 0;
	}
	try
	{// пытаемся выполнить стоп и закрытие канала, если канал уже закрыт (загрузка закончилась) то оное вызовет ошибку и выполнение перейдет к catch
		soundCha.stop();
		soundObj.close();
	}
	catch (e:Error)
	{
		soundCha.stop();
	}
	// просто остановим
	}
	PlaySound();// и запустим воспроизведение нового трека
}//Конец трека
function fullTrack(event:Event):void
{// определяет новый трэк и переходит к нему
	play_mc.visible = false;
	stop_mc.visible = true;
	if ((track+1)<arrayUrl.length)
	{
		track++;
	}
	else
	{
		track = 0;
	}
	soundCha.stop();
	PlaySound();
}//предыдущий
function prevTrack(event:MouseEvent):void
{
	play_mc.visible = false;
	stop_mc.visible = true;
	if (track != 0)
	{
		track--;
	}
	else
	{
		track = arrayUrl.length - 1;
	}
	try
	{
		soundCha.stop();
		soundObj.close();
	}
	catch (e:Error)
	{
		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_mc.visible = true;// видимость кнопок
	stop_mc.visible = false;
}//чтение тэгов
function id3Handler(event:Event):void
{
	name_txt.text=(track+1)+"/"+arrayUrl.length+"  "+soundObj.id3.artist + " - " + soundObj.id3.songName;
}//кнопка ПУСК
function startPlay(event:MouseEvent):void
{
	play_mc.visible = false;
	stop_mc.visible = true;
	PlaySound();// запускаем основную функцию воспроизведения звука
}//Кнопка ПАУЗА
function stopPlay(event:MouseEvent):void
{
	setPosition = soundCha.position;// запоминаем позицию воспроизведения
	volumeS = soundTrans.volume;// и уровень звука
	play_mc.visible = true;
	stop_mc.visible = false;
	soundCha.stop();
}
// останавливаем воспроизведение
}
 
;//определение нового места проигрывания
function progressPlay(event:MouseEvent):void
{// вызывается когда кликнули на полосе отображающей загрузку и воспроизведение
	volumeS = soundTrans.volume;
	soundCha.stop();
	soundCha = soundObj.play((soundObj.length*loaded) * event.currentTarget.mouseX/200);// определяем координату куда ткнули // и взависимости от этого помещаем точку воспроизведения в нужное нам место
	soundTrans.volume = volumeS;
	soundCha.soundTransform = soundTrans;
	soundCha.addEventListener(Event.SOUND_COMPLETE, fullTrack);
}
// востанавливаем событие реагирующее на конец трэка
play_mc.visible = false;
stop_mc.visible = true;
}
 
;//установка уровня звука
function volumePlay(event:MouseEvent):void
{
	offmark = false;
	volume_mc.volumefill_mc.width = event.currentTarget.mouseX;// определяем куда ткнули и изменяем размер маски
	soundTrans.volume = (event.currentTarget.mouseX*5)/100;// устанавливаем громкость звука
	volumeP = volumeS = soundTrans.volume;
	soundCha.soundTransform = soundTrans;
	offvolume_mc.visible = false;
	onvolume_mc.visible = true;
}//включение звука
function offvolumePlay(event:MouseEvent):void
{
	offmark = false;
	offvolume_mc.visible = false;
	onvolume_mc.visible = true;
	volume_mc.volumefill_mc.width = (volumeP*100)/5;
	soundTrans.volume = volumeP;
	soundCha.soundTransform = soundTrans;
}//Выключение звука