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

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

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

Регистрация: Dec 2010
Сообщений: 81
По умолчанию Плеер на сайт

Помогите с плеером на сайт, что уже не перепробывал. Не в какую не работает. Вот плеер
http://fort.lafa-game.ru/RSPlay2.swf
вот песня
http://fort.lafa-game.ru/02%20Eddie%...s%20Remix).mp3
вот плей лист
PHP код:
<?xml version="1.0" encoding="ISO-8859-1"?>
<playlist>
        <url>02 Eddie Thoneick- Perfect Moment (Francesco Diaz & Young Rebels Remix).mp3</url>
        <url>http://fort.lafa-game.ru/02%20Eddie%20Thoneick-%20Perfect%20Moment%20(Francesco%20Diaz%20&%20Young%20Rebels%20Remix).mp3</url>
        <url>fort.lafa-game.ru/02%20Eddie%20Thoneick-%20Perfect%20Moment%20(Francesco%20Diaz%20&%20Young%20Rebels%20Remix).mp3</url>
        <url>02%20Eddie%20Thoneick-%20Perfect%20Moment%20(Francesco%20Diaz%20&%20Young%20Rebels%20Remix).mp3</url>
        <url>http://fort.lafa-game.ru/02 Eddie Thoneick- Perfect Moment (Francesco Diaz & Young Rebels Remix).mp3</url>
        <url>fort.lafa-game.ru/02 Eddie Thoneick- Perfect Moment (Francesco Diaz & Young Rebels Remix).mp3</url>
</playlist>
Помогите пожалуйста

Старый 31.03.2011, 23:31
NikolyA вне форума Посмотреть профиль Отправить личное сообщение для NikolyA Найти все сообщения от NikolyA
  № 2  
Ответить с цитированием
NikolyA
 
Аватар для NikolyA

Регистрация: Dec 2006
Сообщений: 1,764
Eddie%20Thoneick-%20Perfect%20Moment%20 - после буфферизации играет, что не так?
__________________
а за окном атлантический океан!

Старый 31.03.2011, 23:48
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 3  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Проблема в SoundMixer.computeSpectrum

Код AS1/AS2:
SecurityError: Error #2122: Нарушение изолированной среды: SoundMixer.computeSpectrum: http://fort.lafa-game.ru/RSPlay2.swf не может осуществить доступ к http://v19.lscache2.c.youtube.com/vi...5a29591d1dff75. Необходим файл политики, но, когда были загружены эти мультимедийные данные, флаг checkPolicyFile не был установлен.
	at flash.media::SoundMixer$/computeSpectrum()
	at RSPlay2_fla::MainTimeline/renderSpectrum()
__________________
hauts.ru

Старый 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;
}//Выключение звука

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

Регистрация: Dec 2010
Сообщений: 81
Код AS3:
function onvolumePlay(event:MouseEvent):void
{
	offmark = true;
	volumeP = soundTrans.volume;
	offvolume_mc.visible = true;
	onvolume_mc.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;
 
 
	name_txt.text = (track+1)+"/"+arrayUrl.length+" Не удалось прочитать ID3 тэги";// делаем стандартную строку (она станется если функция чтения тэгов ее не обновит)
	soundObj.addEventListener(ProgressEvent.PROGRESS, LoadProgress);
	// создаем слушатель прогреса загрузки
	soundObj.addEventListener(Event.ID3, id3Handler); // и получения тэгов
	addEventListener(Event.ENTER_FRAME, renderSpectrum); ;// создаем событие ENTER_FRAME которое будет запускать функцию прорисовки аналайзера
	addEventListener(Event.ENTER_FRAME, Progress);// и ENTER_FRAME для програсса воспроизведения
 
 
	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;
}
}//отображение прогреса воспроизведения
function Progress(event:Event):void
{
loaded = soundObj.bytesTotal / soundObj.bytesLoaded;// просчитываем какую часть мы загрузили это нужно для поправики в отображения прогресса
progress_mc.progressfill_mc.x = Math.round(200*(soundCha.position/(soundObj.length*loaded)))-200;// двигаем полосу прокресса
var allsec:int = Math.floor(soundCha.position / 1000);// и считаем секунды воспроизведения
var min:int = Math.floor(allsec / 60);//
var sec:int = allsec-(Math.floor(allsec/60)*60);//
if (sec < 10)
{
	time_txt.text = String(min) + ".0" + String(sec);//формируем текстовую строку с итогами посдчетов
}
else
{
	time_txt.text = String(min) + "." + String(sec);//формируем текстовую строку с итогами посдчетов
}
}//визуализатор
function renderSpectrum(event:Event):void
{// здесь мы заставляем аналайзер показывать нам правду
SoundMixer.computeSpectrum(soundBytes, false, 0);
// получаем инфу о звуке
array = byteToReal(soundBytes); ;// преобразование
array = FFT(array,256);// тоже
array = complexToReal(array);// и это тоже
//и теперь уже удобоваримые данные мы используем для прорисовки уровней
for (var i:int = 1; i<17; i++)
{
	var spektr = this.getChildByName("spektr" + i + "_mc");
	spektr.mask0_mc.scaleY = array[i * 7] / 4;
}
}//битовый массив в реальный
function byteToReal(arr:ByteArray):Array
{
var realArr:Array = new Array();// Создаем массив для результата расшифровки
for (var i:int = 0; i<256; i++)
{// Расшифровываем первые 256 значений - левый канал
	realArr[i] = arr.readFloat();
}
for (var k:int=0; k<256; k++)
{// Расшифровываем остальные 256 значений - правый
	realArr[k] = (arr.readFloat()+realArr[k])/2;// Здесь значения для левого и правого канала
	// складываются и делятся на 2 (среднее арифметическое)
}
return realArr;//Возвращаем результат
}// преобразования фурье
function FFT(a:Array, tnn:int):Array
{
if (a[1] + a[128] == 0)
{
	return a;
}
var twr:Number;
var twi:Number;
var twpr:Number;
var twpi:Number;
var twtemp:Number;
var ttheta:Number;
var i:int;
var i1:int;
var i2:int;
var i3:int;
var i4:int;
var c1:Number;
var c2:Number;
var h1r:Number;
var h1i:Number;
var h2r:Number;
var h2i:Number;
var wrs:Number;
var wis:Number;
var nn:int;
var ii:int;
var jj:int;
var n:int;
var mmax:int;
var m:int;
var j:int;
var istep:int;
var isign:int;
var wtemp:Number;
var wr:Number;
var wpr:Number;
var wpi:Number;
var wi:Number;
var theta:Number;
var tempr:Number;
var tempi:Number;
var tmp:Number;
ttheta = 2 * Math.PI / tnn;
c1 = 0.5;
c2 = -0.5;
isign = 1;
n = tnn;
nn = tnn / 2;
j = 1;
ii = 1;
while (ii<=nn)
{
	i = 2 * ii - 1;
	if (j > i)
	{
		tempr = a[j - 1];
		tempi = a[j];
		a[j - 1] = a[i - 1];
		a[j] = a[i];
		a[i - 1] = tempr;
		a[i] = tempi;
	}
	m = nn;
	while (m>=2 && j>m)
	{
		j = j - m;
		m = m / 2;
	}
	j = j + m;
	ii++;
}
mmax = 2;
while (n>mmax)
{
	istep = 2 * mmax;
	theta = 2*Math.PI/(isign*mmax);
	tmp = Math.sin(0.5 * theta);
	wpr = -2.0 * tmp * tmp;
	wpi = Math.sin(theta);
	wr = 1.0;
	wi = 0.0;
	ii = 1;
	while (ii<=mmax / 2)
	{
		m = 2 * ii - 1;
		jj = 0;
		while (jj<=(n-m) / istep)
		{
			i = m + jj * istep;
			j = i + mmax;
			tempr = wr * a[j - 1] - wi * a[j];
			tempi = wr * a[j] + wi * a[j - 1];
			a[j - 1] = a[i - 1] - tempr;
			a[j] = a[i] - tempi;
			a[i - 1] = a[i - 1] + tempr;
			a[i] = a[i] + tempi;
			jj++;
		}
		wtemp = wr;
		wr = wr * wpr - wi * wpi + wr;
		wi = wi * wpr + wtemp * wpi + wi;
		ii++;
	}
	mmax = istep;
}
tmp = Math.sin(0.5 * ttheta);
twpr = -2.0 * tmp * tmp;
twpi = Math.sin(ttheta);
twr = 1.0 + twpr;
twi = twpi;
i = 2;
while (i<=tnn / 4+1)
{
	i1 = i + i - 2;
	i2 = i1 + 1;
	i3 = tnn + 1 - i2;
	i4 = i3 + 1;
	wrs = twr;
	wis = twi;
	h1r = c1*(a[i1]+a[i3]);
	h1i = c1*(a[i2]-a[i4]);
	h2r = -c2*(a[i2]+a[i4]);
	h2i = c2*(a[i1]-a[i3]);
	a[i1] = h1r + wrs * h2r - wis * h2i;
	a[i2] = h1i + wrs * h2i + wis * h2r;
	a[i3] = h1r - wrs * h2r + wis * h2i;
	a[i4] =  -  h1i + wrs * h2i + wis * h2r;
	twtemp = twr;
	twr = twr * twpr - twi * twpi + twr;
	twi = twi * twpr + twtemp * twpi + twi;
	i++;
}
h1r = a[0];
a[0] = h1r + a[1];
a[1] = h1r - a[1];
return a;
}//Преобразование комплексных в реальные числа
function complexToReal(arr:Array):Array
{
for (var i:int = 1; i<=128; i++)
{// i = 1 т.к 0 и 1 ячейки массива - служебные
	arr[i - 1] = Math.sqrt(arr[i * 2] * arr[i * 2] + arr[i * 2 + 1] * arr[i * 2 + 1]);//Находим модуль комплексного числа
}
arr.splice(127);// Отрезаем от массива лишние элементы, начиная от 127
return arr;// Возвращаем 127 элементов (0 - 126)
}// типа запуск // типа нет
//initPlayMp3();

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

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

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


 


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


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