Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML |
Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML Scopul acestui tutorial este intrebarea cum sa face player pentru video online unic, personalizat si simplu. Care sa fie in stare sa arate filme si alte video din folder cu video incarcate de utilizatori. Realizare: Flash + PhP + Mysql, in flash se foloseste componenta MediaDisplay Mai intai se deseneaza butoane pentru player ![]() Butonul pauza si play le pozitionam una deasupra la cealalta. Dar acum sa setam denumiri pentru butoanele noastre Instanse Play - b_play Pauza - b_pause Video anterior - b_prev Stop - b_stop Video urmator - b_next Acum avem nevoie de buton control pentru sunet, le-am facut 4. Volum minim, volum maxim si doua intermediare ![]() La fel oferim respectiv in ordine de cresterea volumului, Instanse denumiri: b_vol_min b_vol_cet1 b_vol_cet2 b_vol_max Cu butoane am clarificat. Sper ca nu ati uitat inainte de specificarea denumirii sa faceti imagini cu butoane ca butoane insusi Acum construim doua bare: 1 - arata proces de incarcare(cat s-a incarcat) a video, 2 - proces de vizionare a video Desenam dreptunghi subtire ca o dunga: ![]() Il convertam in movie clip Acum trebuie sa cream animatie din 100 cadre Copiem dreptunghi pe alt layer, schimbam culoarea de exemplu pe #0072bc; linia pe al 2 layer o mutam in asa fel incat sa fie cat mai aproape/pe 1 linie, in cazul meu aceasta arata asa: Mergem la cadru/frame 100 si in toate layere cream un cadru nou, dar linia de pe al 2 layer o mutam pe _x = 0; _y = 0; Cream al 3 cadru, copiem linia de pe 1 cadru pozitionam pe _x = 0; _y = 0; si facem acest layer ca masca pentru al 2 layer ![]() Pe primul cadru a oricarui layer(chiar si layer nou) in Actionscript scriem: stop(); Ne intoarcem in scena si acestui movieclip ii dam denumirea instanse= p_bar (progres bar) Copiem progres barul nostru si schimbam instanse name = p_bar_2 Redactam progres bar: Inlaturam primul layer, dar culoarea liniei celui al 2 layer o schimbam, spre exemplu roz. In scenariu progres barurile le pozitionam unul deasupra la cealalt. Cream layer nou in scena si il facem cel mai de jos. Pe el vom pozitiona componentul MediaDisplay, instanse name=player. Latimea si inaltimea videodialogului le facem maxime. Layer cu videodialog inchidem pentru redactare. Cream un text dinamic cu instanse name = video_info; Pozitionam toate elemente in scena: Acum trecem la partea programarii Codu il scrieti in primul cadru a layerului nou sau layer cu toate butoane. //Pentru inceput creaza variabile var video_num; //care controleaza video var array_length; //numar total video var video_progress; //progres var var_id = new Array(); //pentru date var var_name = new Array(); var var_url = new Array(); var myXML:XML = new XML(); //obiect XML Creaza toate variabile, masive si obiecte XML b_pause._visible = false; // ascundem pauza Ascundem buton-pauza, deoarece playerul nostru nu reproduce singur myXML.load("video.xml"); // incarcam XML Incarcam XML nostru.Despre cum se construieste XML mai jos myXML.onload = function(success) { //dupa incarcare if (success) { //Daca incarcare cu succes xmlNode = this.firstChild; //Deschide primul tag XML for (var i=0; i<myXML.firstChild.childNodes.length; i++) { //ciclu de creare a masivului var_id[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue; var_name[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue; var_url[i] = xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue; var_data[i] = xmlNode.childNodes[i].childNodes[3].firstChild.nodeValue; } array_length = var_id.length; video_num = 0; video_info.text = "Asteapta: "+var_name[video_num]; } else { trace("Nu pot sa incarc xml fisier"); } }; Aici scoatem toate datele in tabele masive b_play.onRelease = function() { //Actiune pentru buton play if (video_progress == null) { //Daca pana atunci nu am apasat pause atunci this._visible = false; b_pause._visible = true; player.contentPath = "http://laclic.net/flash/uploads/video/"+var_url[video_num]; //Setam player sa arate video,adresa din tabela caruia este egala cu video_num video_info.text = "Èãðàåò: "+var_name[video_num]; //Text in video info } else { //Daca a fost apasata pauza player.play(video_progress); this._visible = false; b_pause._visible = true; video_info.text = "Play: "+var_name[video_num];//Text in video info } } b_pause.onRelease = function() { //Actiune pentru buton - pauza video_progress = player.playheadTime; //Memoram unde ne-am oprit player.stop(); //Stopam vizionarea this._visible = false; b_play._visible = true; video_info.text = "Pauza: "+var_name[video_num]; //Text in video info } b_stop.onRelease = function() { player.stop(); //Stopam vizionarea b_play._visible = true; b_pause._visible = false; video_progress = 0.001; //Anulam valoarea pauzei, de la 0.001 evitam bag nul } b_next.onRelease = function() { //Actiune buton - video urmator if (array_length - 1 > video_num) { //Daca nu e ultimul video b_play._visible = false; b_pause._visible = true; video_progress = null; //Anulam valoarea pauzei video_num++; //Marim valoare video video_info.text = "In asteptare: "+var_name[video_num]; //Text in video info player.contentPath = "http://laclic.net/flash/uploads/video/"+var_url[video_num]; player.play(); } } b_prev.onRelease = function() { //Actiune pentru buton - video anterior if(video_num != 0) { //Daca nu e primul video b_play._visible = false; b_pause._visible = true; video_progress = null; //Anulam valoarea pauzei video_num--; video_info.text = "In asteptare: "+var_name[video_num]; //Text in video info player.contentPath = "http://laclic.net/flash/uploads/video/"+var_url[video_num]; player.play(); } } b_vol_max.onRelease = function() { //Actiune pentru buton- volum maxim player.volume = 100; } b_vol_cet1.onRelease = function() { //Actiune pentru buton- valoare medie a volumului =2 player.volume = 40; } b_vol_cet2.onRelease = function() { //Actiune pentru buton- valoare medie a volumului =1 player.volume = 60; } b_vol_min.onRelease = function() { //ctiune pentru buton- volumul minimal player.volume = 10; } p_bar.onRelease = function() { //Actiune pentru derularea video this.onePixOnOneSec = player.totalTime / this._width; //setam valoare 1px pentru bara de progres, pe N sec video this.goTo = Math.round(this.onePixOnOneSec * this._xmouse); //Definim valoarea N sec video, egala cu portiunea unde a dat click utilizatorul player.pause(); //Video pe pauza player.play(this.goTo); //Play video de la locul definit de calcul matricei } Cod pentru butoane Despre pauza si stop: In buton stop am setat pauza la 0,001sec.. de ce asa si nu null? Facem aceasta fiindca daca pui null pentru pauza atunci video nu arata deloc. Pauza - da,da, in componente video se poate face player.pause();... dar cu fisiere avi nu am reusit sa fac nimic. :( setInterval(function() { //Executa functie o data la timp anumit var loaded = Math.round(player.bytesLoaded / player.bytesTotal * 100); var progres = Math.round(player.playheadTime / player.totalTime * 100); p_bar.gotoAndStop(loaded); p_bar_2.gotoAndStop(progres); if (progres == 100) { //Daca video s-a finalizat, incercam sa trecem la video urmator if (array_length - 1 > video_num) { video_num++; player.contentPath = "http://laclic.net/flash/uploads/video/"+var_url[video_num]; player.stop(); //Stopam vizionarea, fiinda asteptam actiunea utilizatorului } b_pause._visible = false; b_play._visible = true; video_progress = 0.001; //Anulam valoarea pauzei video_info.text = "Îæèäàåò: "+var_name[video_num]; //Text in video info } }, 100); Cod pentru modificarea dinamica a barului de progrese XML document: <?xml varsion="1.0" encoding="utf-8"?> <video> <vid> <id>1</id> <name>1.flv</name> <url>1_video_123456.flv</url> </vid> <vid> <id>2</id> <name>2.flv</name> <url>2_video_123456.flv</url> </vid> </video> In cod modificati date site, acolo este folder de unde sa ia video, modificati pe datele siteului dvs. Partea 2. PHP + MySQL = Xml + Flash Mai intai cream BD MySQL. Eu am folosit PhPMyAdmin pentru crearea si lucru cu baza de date. Numim maza de date video, numar de campuri =3 id - tip integet(int, intreg), nr maxim de simboluri, de exemplu 3, cu parametrii auto_increment(ài, autocompletare), si campul cu cheie primara. url - tip text(text). name - tip text(text). Acum fisier -care creaza XML document. <?php mysql_connect("adresa catre bd", "login", "parola"); //Conectare la server MySQL mysql_select_db("nume bd"); //Alegem bd mysql_query("SET NAMES utf8"); //Schimbam codul datelor primite pe utf-8, sau alta de exemplu windows-1251 $query = mysql_query("SELECT * FROM video ORDER BY `video`.`id` DESC"); //Primim toate datele din tabela cu video, cu conditie de alegere- de la ultimul $check = mysql_fetch_array($query); //Introducem datele in tabel echo '<?xml varsion="1.0" encoding="utf-8"?><video>'; //Primul rand din XML do { //Ciclu echo '<vid><id>'.$check['id'].'</id><name>'.$check['name'].'</name><url>'.$check['url'].'</url></vid>'; } while ($check = mysql_fetch_array($query)); //Conditie, daca adevarata atunci repetam ciclu echo '</video>'; //Inchidem tag primar ?> Apoi trebuie sa cream script care va incarca fisiere pe server. Am facut primul stadiu cu ajutorul lui flash... urmeaza acest link Din lectie se ia numai partea care are legatura cu flash Acum fisier la care se adreseaza este flash <?php mysql_connect("adresa bd", "login", "parola"); //Conectare la server MySQL mysql_select_db("èìÿ áä"); //Alegem bd mysql_query("SET NAMES utf8"); //Schimbam codul datelor primite pe utf-8, sau alta de exemplu windows-1251 $query = mysql_query("SELECT * FROM video"); //Primim toate datele din tabela cu video $num_rows = mysql_num_rows($query); //Definim numar de randuri in tabel $num_pict = $num_rows + 1; //+1 la acea valoare $rand_name = $num_pict.'_video_'.rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9); //Cream nume nou pentru fisier $format_name = substr(basename($_FILES['Filedata']['name']), -3); //Detectam rezolutie $pict_name = $rand_name.'.'.$format_name; if ($_FILES['Filedata']['name']) { $upload_dir = "../uploads/video/"; //Mapa unde mutam fisier $upload_file = $upload_dir.$pict_name; //Cream calea completa move_uploaded_file($_FILES['Filedata']['tmp_name'], $upload_file); //Transferam $query = mysql_query("INSERT INTO video (name, url) VALUES ('".basename($_FILES['Filedata']['name'])."', '".$pict_name."')"); //Inseram date in bd } ?> Exemplu de xml <track> <creator>Ace of Base</creator> <title>Beautiful life </title> <location>/musician/ace_of_bas/ace_of_bas-beautiful_life.flv</location> <image>//playerScreen.jpg</image> <info>/musician/ace_of_bas/</info> </track> |
| html-link catre acest articol | |
| BB-cod pentru publicarea in bloguri | |
| Link direct catre acest articol |
Stimate vizitator, nu sunteti inregistrat in site. Va recomandam sa folositi autentificare sau inregistrare in site.
Info
Vizitatori din grupul Oaspeti, nu pot comenta acest articol.








orice info sau modul

