Flvplayer+xml+txt dynamique+tilelist+uiloader

Description

flvplayer+xml+txt dynamique+tilelist+uiloader

le voilà enfin, le player avec le xml externe, et d'autres composants, on ne s'attardera pas sur le graphisme!! mais sur le contenu, enfin voilà!! a vous de jouer, esperant ainsi repondre a vos attentes...
Pour etre sûr de le voir fonctionner utilisez votre serveur local(wamp ou easyphp ou autre!)

Source / Exemple :


import fl.video.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import fl.controls.UIScrollBar;
import fl.controls.*;
import fl.events.ListEvent;
import fl.data.*;
//-------------le player----------------------
var vid = new FLVPlayback();
vid.x = 10;
vid.y =205;
vid.width=180;
vid.height= 135;
addChild(vid);
//////////////////////////////////////////////////////////
//-----------le xml---------------------------------
//les variables pour le xml:
var xml:XML;
var videosXML:XMLList;
var getvideo:URLRequest;
var pos:Number;
var currentIndex:Number = 0;
var currentvideo:FLVPlayback = vid;
//chargement du xml--------------
var uldr = new URLLoader();
uldr.addEventListener(Event.COMPLETE, xmlComplet);
uldr.load(new URLRequest('playlist.xml'));

//creation et lecture xml executée 
//lorsque la playlist.xml est bien chargé
function xmlComplet(event:Event):void 
	{
			xml = new XML(event.target.data);
			videosXML = xml.videos;
			getvideo=new URLRequest(videosXML[currentIndex].url);
//on indique au txt et au player quelle source ils devront utiliser
//au demarrage de l'animation (videosXML, index[0]et la balise qui leur est destinée) 
			vid.source= videosXML[currentIndex].url;
			txt.text = videosXML[currentIndex].titre;
			synopsis.text= videosXML[currentIndex].histoire;
			jacquette.source=videosXML[currentIndex].image;
			
	scrollb.update();
//--------------------Fonction video suivante-------------------------
// enchaine la video suivante
vid.addEventListener(Event.COMPLETE, video_suivante);
function video_suivante(e:Event):void
{
	if (currentIndex < (videosXML.length() - 1))
	{
		currentIndex++;
	}
	else
	{
		currentIndex = currentIndex;
	}
		var suivantReq:URLRequest = new URLRequest(videosXML[currentIndex].url);
		vid.source=videosXML[currentIndex].url;
		txt.text = videosXML[currentIndex].titre;
		synopsis.text= videosXML[currentIndex].histoire;
		jacquette.source=videosXML[currentIndex].image;
}
/////////////////////////////////////////////////////////////
// là, on rajoute la list et son data provider
var provider:DataProvider =new DataProvider(xml);
	
	var list:List = new List();
		list.dataProvider=provider;
		list.allowMultipleSelection=false;
		list.rowHeight=20;
		list.width= 300;
		list.rowCount=3;
		list.x=5;
		list.y=140;
//ici le label de la list(ce que l'on lira dedans)
		list.labelFunction = listexml;
	function listexml(obj:Object):String 
{
    return obj.titre;
}

		addChild(list);

//----------FIN  LIST---------------------------------------
////////////////////////////////////////////////////////////
//--------fonction de la LIST -------------------------------
//par CLICK
list.addEventListener(ListEvent.ITEM_CLICK ,select);
function select(evt:ListEvent):void
	{		videosXML = xml.videos;
			getvideo=new URLRequest(videosXML[currentIndex].url);
			var currentIndex:Number = list.selectedIndex;
			vid.source=videosXML[currentIndex].url;
			txt.text = videosXML[currentIndex].titre;
			synopsis.text= videosXML[currentIndex].histoire;
			jacquette.source=videosXML[currentIndex].image;
	
			scrollb.update();	
	}

///////////////////////////////////////////////////////////
// avec 'trace' on verifie que notre xml se charge bien
			trace(videosXML.url)
	}

//-------------------fin du xml-------------------------------
////////////////////////////////////////////////////////////////
//---------les commandes du player---------------------------
// on attache les boutons avec le player
vid.volumeBar= vol;
vid.fullScreenButton= full;
vid.fullScreenTakeOver = true;
vid.playButton= butplay;
vid.pauseButton=butpause;
vid.stopButton=butstop;
vid.muteButton= mute;
// on attache la barre de buffer et celle du seekbar au player
vid.bufferingBar=buffer;
vid.seekBar=seekb;
butplay.visible=false;
butpause.visible=true;

//comportement des boutons play pause stop
butplay.addEventListener(MouseEvent.CLICK, jouer);
function jouer(event:MouseEvent):void
 { 	butplay.visible=false;
 	butpause.visible=true;
}
butpause.addEventListener(MouseEvent.CLICK, pauses);
function pauses(event:MouseEvent):void
 { 	butplay.visible=true;
 	butpause.visible=false;
}
butstop.addEventListener(MouseEvent.CLICK, arret);
function arret(event:MouseEvent):void
 { 	butplay.visible=true;
 	butpause.visible=false;
}
//---------Avant  Apres----------------
avant.addEventListener(MouseEvent.CLICK, vidprec); 
apres.addEventListener(MouseEvent.CLICK, vidsuiv);
//--pour aller a la video suivante---------
function vidsuiv(e:Event):void
	{	
//si currentIndex plus petit que la longueur du xml -1(pour etre avant la derniere video du xml)
	if (currentIndex < (videosXML.length() - 1))
	{	// donc currentIndex s'incrémente de 1
		currentIndex++;
	}
	else
	{	//sinon currentIndex revient a la premiere video du xml
		currentIndex = 0;
	}

	var suivReq:URLRequest = new URLRequest(videosXML[currentIndex].url);
	vid.source=videosXML[currentIndex].url;
	txt.text = videosXML[currentIndex].titre;
	synopsis.text= videosXML[currentIndex].histoire;
	jacquette.source=videosXML[currentIndex].image;
	
	scrollb.update();
	//--------------------Fonction video suivante-------------------------
// enchaine la video suivante
vid.addEventListener(Event.COMPLETE, video_suivante);
function video_suivante(e:Event):void
{
	if (currentIndex < (videosXML.length() - 1))
	{
		currentIndex++;
	}
	else
	{
		currentIndex = currentIndex;
	}
		var suivantReq:URLRequest = new URLRequest(videosXML[currentIndex].url);
		vid.source=videosXML[currentIndex].url;
		txt.text = videosXML[currentIndex].titre;
		synopsis.text= videosXML[currentIndex].histoire;
		jacquette.source=videosXML[currentIndex].image;
}
/////////////////////////////////////////////////////////////
}
//--pour aller a la video precedente---------
function vidprec(e:Event):void
{
	if (currentIndex > 0)
	{
		currentIndex--;
	}
	else
	{
		currentIndex = videosXML.length() - 1;
	}

		
	var precReq:URLRequest = new URLRequest(videosXML[currentIndex].url);
	vid.source=videosXML[currentIndex].url;
	txt.text = videosXML[currentIndex].titre;
	synopsis.text= videosXML[currentIndex].histoire;
	jacquette.source=videosXML[currentIndex].image;
	
	scrollb.update();
//--------------------Fonction video suivante-------------------------
// enchaine la video suivante
vid.addEventListener(Event.COMPLETE, video_suivante);
function video_suivante(e:Event):void
{
	if (currentIndex < (videosXML.length() - 1))
	{
		currentIndex++;
	}
	else
	{
		currentIndex = currentIndex;
	}
		var suivantReq:URLRequest = new URLRequest(videosXML[currentIndex].url);
		vid.source=videosXML[currentIndex].url;
		txt.text = videosXML[currentIndex].titre;
		synopsis.text= videosXML[currentIndex].histoire;
		jacquette.source=videosXML[currentIndex].image;
}
/////////////////////////////////////////////////////////////
}
//------------Fin des commandes du player------------------

////////////////////////////////////////////////////////////
//-----------le texte synopsis et son scroll--------------
//appeler la scrollbar qui est dans la librairie
var scrollb:UIScrollBar = new UIScrollBar();
addChild(scrollb);

// cibler le champs de texte.
scrollb.scrollTarget = synopsis;

// adapter la scrollbar a la taille du text
scrollb.setSize(16, synopsis.height); 

// deplacement du text dans le champs de texte.
scrollb.move(synopsis.x + synopsis.width, synopsis.y);

	
vid.addEventListener(Event.COMPLETE, completeHandler);

function completeHandler(event:Event):void {
	synopsis.text = videosXML[currentIndex].histoire;
	scrollb.update();
}

Conclusion :


Beh eclatez-vous , vous avez dorenavant la possibilité d'utiliser le xml ainsi que les objet video!!
Bonne prog a tous!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.