inchide

Publicitate

Afisarea publ.info
Companie

Afisarea detaliilor publicitare

Detalii...


Publicitate

Panel 1

Info sau baner
Detalii..

Panel 2

Info sau baner
Detalii...

Panel 3

Info sau baner
Detalii...

Panel 4

Info sau baner
Detalii...


Vot

Apreciati designul site-ului

Formidabil
Bun
Normal
Am vazut mai bune
Nu mi-a placut

...

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

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
Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML


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
Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML

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:
Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML

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:
Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML


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
Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML


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:
Cum se face player(video) in Flash Actionscript 2.0 cu playlist XML


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.