Design Services

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Design Services » Радио плеер as3, Создаём плеер


Радио плеер as3, Создаём плеер

Привет. По многочисленным просьбам пишу данный урок.
В данном уроке я попытаюсь объяснить основные принципы работы со звуком и использования классов на примере радио плеера с возможностью выбора нескольких радиостанций.

Приступим:
Создаём новый документ 550x400. В поле Document Class пропишем main.Main

В папке с проектом создаем папку main и в ней Новый as документ, называем его Main.
Радио плеер as3

Графическая часть:

Рисуем кнопку play, жмём f8,выбираем movieClip, называем playBtn и импортируем для action script с таким же именем.


Радио плеер as3

Тоже повторяем для кнопок stop, и следующая радиостанция. Имена даём stopBtn и nextBtn соответственно.
Рисуем задний фон для плеера, жмём f8,выбираем movieClip, называем radioBg, импортируем для action script. Внутри данного мувика создаём динамическое текстовое поле с инстансом name_txt.

Кнопки громкости
Создадим прямоугольник назовём volBar (MovieClip) затем выстраиваем в ряд 4 штуки и объединяем в один мувик, называем volBtn и ставим export for action script. Каждому из 4ёх мувиков даём инстанс имя от v1_btn до v4_btn.
Готово. Очищаем сцену, все компоненты плеер будут загружены программно.

Программная часть
В файле main.as пишем, тем самым импортируем класс плеера в наш основной класс (т.е плеер можно вставить в любую игру или страничку на as3 без особых усилий )

CODE

package main{
import flash.display.MovieClip;
import main.radio.*;
public class Main extends MovieClip {
var radioPlayer:Radio;
public function Main() {
//размещаем плеер по координатам x=120, y =200
radioPlayer=new Radio(120,200);
addChild(radioPlayer);
}
}
}



В папке main создаём ещё одну папку radio и в ней создаём Radio.as Это класс с радио плеером. В нём пишем

CODE

package main.radio{
///Библиотеки классов
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;
import flash.utils.*;

public class Radio extends MovieClip {
////Массив с названиями и ссылками на радиостанции
private var Data:Array=[
[
"Europaplus",
"Kinkaardschok",
"Kiss fm" ,
"Радио Рекорд",
"Net Radio Adult",
"Net Radio Hot",
"Net Radio Garage" ,
"Net Radio Rap"
],
[
"http://stream.netradio.by:8020/europaplus_128",
"http://stream.netradio.by:8020/kinkaardschok_192",
"http://stream.netradio.by:8020/kissfm128",
"http://stream.netradio.by:8020/radiorecord_192",
"http://stream.netradio.by:8000/adult/mp3/128",
"http://stream.netradio.by:8000/hot/mp3/128",
"http://stream.netradio.by:8000/garage/mp3/128",
"http://stream.netradio.by:8000/rap/mp3/128"
]
];


///фон плеера
public var BackGround:radioBg=new radioBg();
///кнопка плей
public var Play:playBtn=new playBtn();
///кнопка стоп
public var Stop:stopBtn=new stopBtn();
//следующая
public var Next:nextBtn=new nextBtn();
// предыдущая
public var Prev:nextBtn=new nextBtn();
/// кнопка громкости
public var Vol:volBtn=new volBtn();
//Играет ли музыка
public var MusicPlay:Boolean=false;
//Для работы с звуокм
private var sc:SoundChannel = new SoundChannel();
private var s:Sound=null;
//Текущая радиостанция
private var curChanel:uint=0;

public function Radio(_x:Number=0,_y:Number=0) {
//позиционируем фон
BackGround.x=_x;
BackGround.y=_y;
addChild(BackGround);
//позиционируем кнопки управления
Play.x=_x+20;
Play.y=_y+20;
addChild(Play);
Stop.x=_x+20;
Stop.y=_y+20;
addChild(Stop);
Prev.x=_x+80;
Prev.y=_y+15;
Prev.scaleX=-1;
addChild(Prev);
Next.x=_x+260;
Next.y=_y+15;
addChild(Next);
Vol.x=_x+310;
Vol.y=_y+35;
addChild(Vol);


////////////////Слушатели
Play.addEventListener(MouseEvent.CLICK,SoundPlay);
Play.addEventListener(MouseEvent.MOUSE_OVER, startTooltipCounter);
Play.addEventListener(MouseEvent.MOUSE_OUT, hideTooltip);

Stop.addEventListener(MouseEvent.CLICK,SoundStop);
Stop.addEventListener(MouseEvent.MOUSE_OVER, startTooltipCounter);
Stop.addEventListener(MouseEvent.MOUSE_OUT, hideTooltip);

Next.addEventListener(MouseEvent.CLICK,SoundNext);
Next.addEventListener(MouseEvent.MOUSE_OVER, startTooltipCounter);
Next.addEventListener(MouseEvent.MOUSE_OUT, hideTooltip);

Prev.addEventListener(MouseEvent.CLICK,SoundPrev);
Prev.addEventListener(MouseEvent.MOUSE_OVER, startTooltipCounter);
Prev.addEventListener(MouseEvent.MOUSE_OUT, hideTooltip);
//Вешаю слушатели на кнопки регулятора звука
for (var i:Number=1; i<=4; i++) {
Vol['v'+i+'_btn'].addEventListener(MouseEvent.CLICK,VolumeChange);
}
//Обновляем текстовое поле и кнопки
update();
}

public function SoundPlay(e:MouseEvent) {
if (MusicPlay==false) {
if (s) {
//закрываем канал если он открыт
s.close();
}
//Получаем ссылку радиостанции из массива
var nextTitle:Sound=new Sound(new URLRequest(Data[1][curChanel]));
//Грузим её
s=nextTitle;
//Воспроизводим
sc=s.play();
//Указывем что музыка играет
MusicPlay=true;
//Обновляем кнопки
update();
}
}

public function SoundStop(e:MouseEvent) {
//Останавливаю музыку
sc.stop();
if (s) {
//закрываем канал если он открыт
s.close();
}
//Указывем что музыка не играет
MusicPlay=false;
s=null;
//Обновляем кнопки
update();
}

public function SoundNext(e:MouseEvent) {
//Останавливаю музыку
sc.stop();
if (s) {
//закрываем канал если он открыт
s.close();
}
//Указывем что музыка не играет
MusicPlay=false;
///Если текущая радиостанция, последняя в списке, перескакиваю на первую
if (curChanel==Data[1].length-1) {
curChanel=0;
} else {
//иначе просто плюсую
curChanel+=1;
}
//Получаем ссылку радиостанции из массива
var nextTitle:Sound=new Sound(new URLRequest(Data[1][curChanel]));
//Грузим её
s=nextTitle;
//Воспроизводим
sc=s.play(0);
//Указывем что музыка играет
MusicPlay=true;
//Обновляем текстовое поле
update();
}

public function SoundPrev(e:MouseEvent) {
//Останавливаю музыку
sc.stop();
if (s) {
//закрываем канал если он открыт
s.close();
}
//Указывем что музыка не играет
MusicPlay=false;
///Если текущая радиостанция меньше, чем минимальная в списке, перескакиваю на последнюю
if (curChanel<=0) {
curChanel=Data[1].length-1;
} else {
//иначе просто отнимаем
curChanel-=1;
}
//Получаем ссылку радиостанции из массива
var nextTitle:Sound=new Sound(new URLRequest(Data[1][curChanel]));
//Грузим её
s=nextTitle;
//Воспроизводим
sc=s.play(0);

//Указывем что музыка играет
MusicPlay=true;
//Обновляем текстовое поле
update();
}

private function update() {
//Обновляем текстовое поле и отображаем название радиостанции
BackGround.name_txt.text=Data[0][curChanel];
///Показываем кнопку stop если play нажата и наоборот
if (MusicPlay==true) {
Play.visible=false;
Stop.visible=true;
} else {
Play.visible=true;
Stop.visible=false;
}
}
////Для изменения прозрачности кнопок при наведении
private function startTooltipCounter(e:MouseEvent):void {
e.currentTarget.alpha=0.6;
}

private function hideTooltip(e:MouseEvent):void {
e.currentTarget.alpha=1;
}
///Меняем звук в зависимости от того какая кнопка нажата
private function VolumeChange(e:MouseEvent):void {
var mod:SoundTransform = new SoundTransform();
//переменная хранящая имя нажатой кнопки
var presedV:String;
//получаю имя нажатой кнопки
presedV=String(e.currentTarget.name);
//Регулирую звук
mod.volume =(Number(presedV.substr(1,1))-1)*0.33;
//применяю громкость к звуковому каналу
sc.soundTransform=mod;
///циклы для кнопок звука
for (var i:Number=1; i<=4; i++) {
Vol['v'+i+'_btn'].alpha=0.3;
}

for (i=1; i<=(Number(presedV.substr(1,1))-1)+1; i++) {
Vol['v'+i+'_btn'].alpha=1;
}
}
}
}



Жмём ctrl+enter и тестируем.
Вот и всё

wink.gif



Данный плеер – простой пример использования as3. Если помучатся,можно усовершенствовать дизайн.
Вот что когда-то вышло у меня:
Радио плеер as3


Вы здесь » Design Services » Радио плеер as3, Создаём плеер


Рейтинг форумов | Создать форум бесплатно