Приступим: Создаём новый документ 550x400. В поле Document Class пропишем main.Main
В папке с проектом создаем папку main и в ней Новый as документ, называем его Main. Графическая часть:
Рисуем кнопку play, жмём f8,выбираем movieClip, называем playBtn и импортируем для action script с таким же именем. Тоже повторяем для кнопок 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
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);
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 и тестируем. Вот и всё
Данный плеер – простой пример использования as3. Если помучатся,можно усовершенствовать дизайн. Вот что когда-то вышло у меня:
Обновление..уже скоро.. ① мод никогда не бывает закончен...kostia® 2011™ ツ