Eryskyvidéo v1.05 & v2.00

Soyez le premier à donner votre avis sur cette source.

Vue 5 080 fois - Téléchargée 352 fois

Description

Encore un lecteur flv !

Oui, mais celui-ci a l'avantage de pouvoir faire du streaming avec les fichiers flv que vous avez stockés sur Skydrive dans un répertoire
public. Je vous rappelle que l'espace disponible est de 25 Go, mais avec une limitation de 50 Mo par fichier. Il y a une petite astuce pour
accéder directement au fichier désiré, sans utiliser le lien directe qui n'est valable que quelques heures.
Il vous suffit de rentrer l'adresse de la page relative à la vidéo.

Exemple : http://cid-xxxxxxxxxxxxxxxx.office.live.com/self.aspx/Video/Radiohead/Radiohead^_-^_A^_Wolf^_at^_the^_Door.flv

Pour que cette adresse soit reconnu par le lecteur, il faut lui supprimer l'entête "http://", ce qui nous donne
"cid-xxxxxxxxxxxxxxxx.office.live.com/self.aspx/Video/Radiohead/Radiohead^_-^_A^_Wolf^_at^_the^_Door.flv".
De même, il ne faut pas mettre d'espace, ou de caractères accentués (Vivement conseillé !).

Un proxy php va s'occuper de récupérer le code de la page, et le traitement sera fait dans l'application flash. Sans le proxy, vous
allez avoir une erreur de sécurité crossdomain. Il faut donc installer le fichier swf, la liste xml, et le proxy dans le même répertoire.
Vous pouvez aussi utiliser des adresses absolues présentes sur votre domaine, ou d'un autre domaine. Dans ce cas, il faut laisser le préfixe "http://".

Voici un exemple d'utilisation dans une balise avec une liste xml :

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="640" height="480" id="eryskyplayer" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="movie" value="./eryskyvideo.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
<param name="flashvars" value="liste=./liste.xml&proxy=./as3xy.php&lis=true&cad=true"/>
<embed src="./eryskyvideo.swf" quality="high" flashvars="liste=./liste.xml&proxy=./as3xy.php&lis=true&cad=true"
bgcolor="#000000" width="640" height="480" name="eryskyplayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true"
type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_fr" />
</object>

Vous pouvez aussi l'utiliser sans liste xml :

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="640" height="480" id="eryskyplayer" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="movie" value="./eryskyvideo.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#000000" />
<param name="flashvars" value="vid=http://monsite/video_1.flv|http://monsite/video_2.flv|http://monsite/video_3.flv&proxy=./as3xy.php&lis=true&cad=true"/>
<embed src="./eryskyvideo.swf" quality="high" flashvars="vid=http://monsite/video_1.flv|http://monsite/video_2.flv|http://monsite/video_3.flv&proxy=./as3xy.php&lis=true&cad=true" bgcolor="#000000" width="640" height="480" name="eryskyplayer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_fr" />
</object>

La variable "application_locale" doit avoir la valeur true pour le développement, et de false pour l'utilisation du lecteur sur le réseau.

Une version V2.00 est jointe au fichier zip. Pour être plus conforme à la norme AS3, un énorme package est maintenant disponible.

Flasvars :
- liste : nom et chemin de la liste (Ex : ./liste.xml ou http://monsite/sex_pistols.xml)
- proxy : nom et chemin du proxy (Ex :./as3xy.php ou http://monsite/proxy/as3xy.php) Obligatoire pour le crossdomain Skydrive
- aut : démarrage automatique (Ex : aut=1 ou aut=true)
- ran : choix aléatoire de la vidéo (Ex : ran=1 ou ran=true)
- rep : répétition de la vidéo (Ex : rep=1 ou rep=true)
- lis : lissage de l'image vidéo (Ex : lis=1 ou lis=true)
- ple : flash plein écran (Ex : ple=1 ou ple=true)
- cad : cadrage de la vidéo au dimensions du flash (Ex : aut=1 ou aut=true)
- buf : temps de vidéo chargé avant démarrage en secondes (Ex : buf=5)
- vol : volume de la bande audio (Ex : vol=(1 à 100))

Vous pouvez aussi utiliser vid, tit, et img comme dans la source, pour ne pas avoir à créer de playlist. Si il y en a plusieurs, il faut séparer les adresses par le caractère "|". Si il n'y a pas concordance du nombre dans chaque variable, une erreur est déclarée.

Vous pouvez renommer le fichier vidéo .flv en .ecv. Si vous modifiez la source, vous pouvez renommer avec n'importe quelle extension. Evitez les extensions image, ou exécutable !

Source / Exemple :


import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.*;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.text.TextFormat;
import flash.media.SoundTransform;
import flash.display.Loader;
import flash.utils.Timer;
import flash.display.Bitmap;
import flash.display.StageDisplayState;

var annonce:String = "ErySkyVideo V1.05";
var video_demo:String = "http://monsite/road_killer.ecv|http://monsite/pil_rise.ecv|http://monsite/eryskyvideo/video.flv"
var titre_demo:String = "Road_Killer|Public_Image_Limited|Radiohead_-_A wolf_at_the_door";
var image_demo:String = "http://monsite/image/road_killer.jpg|http://monsite/image/pil.jpg|http://monsite/image/radiohead.jpg";
var liste_demo:String = "http://monsite/eryskyvideo/liste.xml"
var url_video:String;
var url_page:String;
var connexion_reseau:NetConnection;
var flux_video:NetStream;
var meta_video:Object;
var client_video:Object;
var video:Video;
var timer_video:Timer;
var volume_video = new SoundTransform();
var adresse_video:Array = new Array();
var titre_video:Array = new Array();
var image_video:Array = new Array();
var image_menu:Array;
var titre_menu:Array;
var duree_video:int;
var position_video:int;
var parametre:Object = loaderInfo.parameters;
var liste_xml:String = parametre.liste;
var proxy:String = parametre.proxy;
var video_automatique:String = parametre.aut;
var video_aleatoire:String = parametre.ran;
var video_repetition:String = parametre.rep;
var video_lissage:String = parametre.lis;
var video_video:String = parametre.vid;
var video_titre:String = parametre.tit;
var video_image:String = parametre.img;
var video_plein_ecran:String = parametre.ple;
var video_cadrage:String = parametre.cad;
var video_buffer:String = parametre.buf;
var video_volume:String = parametre.vol;
var etat_pause:Boolean = false;
var etat_chargement_page:Boolean = false;
var etat_pret:Boolean = false;
var position_pause:int;
var position_volume:int;
var modification_volume:Boolean = false;
var longueur_liste:int;
var pointeur_liste:int;
var hauteur_flash:int = this.height;
var largeur_flash:int = this.width;
var compteur_image:int;
var pointeur_image:int;
var chargeur_image:Loader;

fond_commande.bouton_play.addEventListener(MouseEvent.CLICK, action_bouton_play);
fond_commande.bouton_play.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_play.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_pause.addEventListener(MouseEvent.CLICK, action_bouton_pause);
fond_commande.bouton_pause.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_pause.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_stop.addEventListener(MouseEvent.CLICK, action_bouton_stop);
fond_commande.bouton_stop.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_stop.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_precedent.addEventListener(MouseEvent.CLICK, action_bouton_precedent);
fond_commande.bouton_precedent.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_precedent.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_suivant.addEventListener(MouseEvent.CLICK, action_bouton_suivant);
fond_commande.bouton_suivant.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_suivant.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_retour.addEventListener(MouseEvent.CLICK, action_bouton_retour);
fond_commande.bouton_retour.addEventListener(MouseEvent.MOUSE_OVER, masquer_bouton);
fond_commande.bouton_retour.addEventListener(MouseEvent.MOUSE_OUT, demasquer_bouton);
fond_commande.bouton_lissage_off.addEventListener(MouseEvent.CLICK, action_bouton_lissage_off);
fond_commande.bouton_lissage_on.addEventListener(MouseEvent.CLICK, action_bouton_lissage_on);
fond_commande.bouton_repetition_off.addEventListener(MouseEvent.CLICK, action_bouton_repetition_off);
fond_commande.bouton_repetition_on.addEventListener(MouseEvent.CLICK, action_bouton_repetition_on);
fond_commande.bouton_aleatoire_off.addEventListener(MouseEvent.CLICK, action_bouton_aleatoire_off);
fond_commande.bouton_aleatoire_on.addEventListener(MouseEvent.CLICK, action_bouton_aleatoire_on);
fond_commande.bouton_cadrage_off.addEventListener(MouseEvent.CLICK, action_bouton_cadrage_off);
fond_commande.bouton_cadrage_on.addEventListener(MouseEvent.CLICK, action_bouton_cadrage_on);
fond_commande.bouton_plein_ecran.addEventListener(MouseEvent.CLICK, action_bouton_plein_ecran);
fond_commande.masque_progression.addEventListener(MouseEvent.CLICK, action_barre_progression);
bouton_macaron.addEventListener(MouseEvent.CLICK, action_bouton_play);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_UP, action_bouton_volume_up);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_DOWN, action_bouton_volume_down);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_MOVE, action_bouton_volume_move);
fond_commande.bouton_volume.addEventListener(MouseEvent.MOUSE_OUT, action_bouton_volume_up);
this.addEventListener(MouseEvent.MOUSE_OVER, action_ecran_video_over);
this.addEventListener(MouseEvent.MOUSE_OUT, action_ecran_video_out);
fond_commande.bouton_menu.addEventListener(MouseEvent.CLICK, action_bouton_menu);
fond_menu.bouton_exit.addEventListener(MouseEvent.CLICK, action_bouton_menu);
fond_menu.bouton_menu_up.addEventListener(MouseEvent.CLICK, action_bouton_up);
fond_menu.bouton_menu_down.addEventListener(MouseEvent.CLICK, action_bouton_down);
fond_menu.bouton_image_1.addEventListener(MouseEvent.CLICK, action_bouton_image_1);
fond_menu.bouton_image_2.addEventListener(MouseEvent.CLICK, action_bouton_image_2);
fond_menu.bouton_image_3.addEventListener(MouseEvent.CLICK, action_bouton_image_3);
fond_menu.bouton_image_4.addEventListener(MouseEvent.CLICK, action_bouton_image_4);

var application_locale:Boolean = true; // Développement et projection Windows : true | Réseau : false

preparation_player();

function preparation_player():void
{
	if (application_locale)
	{
		video_video = video_demo;
		video_titre = titre_demo;
		video_image = image_demo;
		//liste_xml = liste_demo;
		video_volume = "50";
		video_lissage = "true";
		video_cadrage = "1";
	}
	if (proxy == null) proxy = "./as3xy.php";
	if (video_automatique == null) video_automatique = "false";
	if (video_automatique != "1" && video_automatique.toLowerCase() != "true") bouton_macaron.visible = true;
	if (video_repetition == null) video_repetition = "false";
	if (video_repetition != "1" && video_repetition.toLowerCase() != "true") fond_commande.bouton_repetition_on.visible = false;
	if (video_aleatoire == null) video_aleatoire = "false";
	if (video_aleatoire != "1" && video_aleatoire.toLowerCase() != "true") fond_commande.bouton_aleatoire_on.visible = false;
	if (video_lissage == null) video_lissage = "false";
	if (video_lissage != "1" && video_lissage.toLowerCase() != "true") fond_commande.bouton_lissage_on.visible = false;
	if (video_cadrage == null) video_cadrage = "false";
	if (video_cadrage != "1" && video_cadrage.toLowerCase() != "true") fond_commande.bouton_cadrage_on.visible = false;
	if (video_buffer == null) video_cadrage = "5";
	if (Number(video_buffer) < 1 || Number(video_buffer) > 10) video_buffer = "5";
	if (video_volume == null) video_volume = "100";
	if (Number(video_volume) < 1 || Number(video_volume) > 100) video_volume = "100";
	if (video_plein_ecran != null) action_bouton_plein_ecran(null);
	fond_commande.masque_bouton.visible = false;
	fond_commande.barre_progression.width = 0;
	fond_commande.barre_chargement.width = 0;
	formater_texte(texte_annonce, annonce, true, false);
	fond_commande.bouton_volume.x = 575 + Number(video_volume) / 2;
	fond_menu.visible = false;
	if (video_video != null) chargement_liste_video(); else chargement_liste_xml(liste_xml);
}
function chargement_liste_video():void
{
	var erreur_parametre:int = 0;
	if (video_video.indexOf("|") > -1)
	{
		adresse_video = video_video.split("|");
		longueur_liste = adresse_video.length;
		if (video_titre != null)
		{
			titre_video = video_titre.replace(/_/g," ").split("|");
			if (titre_video.length != longueur_liste) erreur_parametre += 1;
		}
		else erreur_parametre += 1;
		if (video_image != null)
		{
			image_video = video_image.split("|");
			if (image_video.length != longueur_liste) erreur_parametre += 2;
		}
		else erreur_parametre += 2;
		for (var i:int = 0; i < longueur_liste; i++)
		{
			if ((erreur_parametre & 0x1) == 0x1) titre_video[i] = "";
			if ((erreur_parametre & 0x2) == 0x2) image_video[i] = "";
		}
	}
	else
	{
		adresse_video[0] = video_video;
		if (video_titre == null) titre_video[0] = ""; else titre_video[0] = video_titre;
		if (video_image == null) image_video[0] = ""; else image_video[0] = video_image;
		longueur_liste = 1;
	}
	pointeur_liste = 0;
	if (longueur_liste == 1)
	{
		fond_commande.bouton_precedent.visible = false;
		fond_commande.bouton_suivant.visible = false;
	}
	if (erreur_parametre != 0 || longueur_liste == 1) fond_commande.bouton_menu.visible = false;
	if (erreur_parametre != 0) formater_texte(fond_commande.texte_progression, "Erreur paramètres !", true, false);
	if (!bouton_macaron.visible) action_bouton_play(null);
}
function initialisation_connexion():void
{
	etat_pret = false;
	connexion_reseau = new NetConnection();
	connexion_reseau.addEventListener(NetStatusEvent.NET_STATUS, status_reseau);
	connexion_reseau.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite_reseau);
	connexion_reseau.connect(null);
}
function chargement_liste_xml(url_xml:String):void
{
	var chargeur_xml:URLLoader = new URLLoader();
	chargeur_xml.addEventListener(Event.COMPLETE, fin_chargement_liste_xml);
	chargeur_xml.addEventListener(IOErrorEvent.IO_ERROR, erreur_chargement);
	chargeur_xml.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite);
	chargeur_xml.load(new URLRequest(url_xml));
}
function connexion_flux():void
{
	texte_annonce.text = "";
	flux_video = new NetStream(connexion_reseau);
	video = new Video(largeur_flash, hauteur_flash);
	flux_video.addEventListener(NetStatusEvent.NET_STATUS, status_reseau);
	flux_video.addEventListener(AsyncErrorEvent.ASYNC_ERROR, erreur_asynchrone_reseau);
	flux_video.bufferTime = Number(video_buffer);
	client_video = new Object();
	client_video.onMetaData = recuperation_donnees;			
	flux_video.client = client_video;
	video.attachNetStream(flux_video);
	flux_video.play(url_video);
	ecran_video.addChild(video);
	etat_pret = true;
	timer_video = new Timer(333);
	timer_video.addEventListener(TimerEvent.TIMER, progression_video);
	timer_video.start();
}
function recuperation_donnees(donnees:Object):void
{
	meta_video = donnees;
	cadrage_video();
}
function cadrage_video():void
{
	if (fond_commande.bouton_cadrage_on.visible)
	{
		var ratio_largeur:Number = largeur_flash / meta_video.width;
		var ratio_hauteur:Number = hauteur_flash / meta_video.height;
		if (ratio_largeur < ratio_hauteur)
		{
			video.width = int(meta_video.width * ratio_largeur);
			video.height = int(meta_video.height * ratio_largeur);
		}
		else if (ratio_largeur > ratio_hauteur)
		{
			video.width = int(meta_video.width * ratio_hauteur);
			video.height = int(meta_video.height * ratio_hauteur);
		}
		else
		{
			video.width = largeur_flash;
			video.height = hauteur_flash;
		}
	}
	else
	{
		video.width = meta_video.width;
		video.height = meta_video.height;
	}
	video.x = (largeur_flash - video.width) / 2;
	video.y = (hauteur_flash - video.height) / 2;
}
function chargement_page(url:String):void
{
	if (url == null || url == "")
	{
		formater_texte(fond_commande.texte_progression, "Erreur url video !", true, false);
		return;
	}
	if (url.toLowerCase().indexOf(".flv") == - 1 && url.toLowerCase().indexOf(".ecv") == - 1)
	{
		formater_texte(fond_commande.texte_progression, "Erreur extention !", true, false);
		return;
	}
	if (url.substr(0, 4) == "cid-")
	{
		var requete_page:URLRequest;
		var chargeur_page:URLLoader  = new URLLoader();
		if (etat_chargement_page) return;
		etat_chargement_page = true;
		if (application_locale) requete_page = new URLRequest("http://" + url);
		else requete_page = new URLRequest(proxy + "?adr=" + url);
		chargeur_page.addEventListener(Event.COMPLETE, fin_chargement_texte);
		chargeur_page.addEventListener(IOErrorEvent.IO_ERROR, erreur_chargement);
		chargeur_page.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite);
		chargeur_page.dataFormat = URLLoaderDataFormat.TEXT;
		chargeur_page.load(requete_page);
	}
	else
	{
		url_video = url;
		initialisation_connexion();
		etat_chargement_page = false;
		return;
	}
}
function recherche_adresse_directe(texte_page:String):void
{
	var i:int = texte_page.toLowerCase().indexOf('id="sppreviewlink"', 0);
	var j:int = texte_page.toLowerCase().indexOf('id="sppreviewimage"', i);
	if ((i != -1) && (j != -1) && (j > i))
	{
		texte_page = texte_page.substr(i, j - i);
		i = texte_page.indexOf("http", 0);
		j = texte_page.indexOf("download", i);
		if ((i != -1) && (j != -1) && (j > i))
		{
			url_video = texte_page.substr(i, (j - i)).replace(/&#47;/g,"\/").replace(/&#63;/,"").replace(/&#58;/g,":");
			return;
		}
	}
	formater_texte(texte_annonce, "Adresse introuvable", true, false);
}
function formater_texte(objet_texte:Object, texte_objet:String, gras:Boolean, italique:Boolean):void
{
	if (texte_objet == null || texte_objet == "")
	{
		formater_texte(fond_commande.texte_progression, "Erreur texte !", true, false);
		return;
	}
	var format_texte:TextFormat = new TextFormat();
	format_texte.bold = gras;
	format_texte.italic = italique;
	objet_texte.text = texte_objet;
	objet_texte.setTextFormat(format_texte);
}
function conversion_horloge(valeur):String
{
	var minute:String = int(valeur / 60).toString();
	if (minute.length == 1) minute = "0" + minute;
	var seconde:String = (valeur % 60).toString();
	if (seconde.length == 1) seconde = "0" + seconde;
	return (minute + ":" + seconde);
}
function generation_video_aleatoire(nombre:int):int {return Math.floor(Math.random() * nombre);}
function chargement_image(url_image:String):void
{
	if (url_image == null || url_image == "")
	{
		formater_texte(fond_commande.texte_progression, "Erreur image !", true, false);
		return;
	}
	chargeur_image = new Loader();
	chargeur_image.contentLoaderInfo.addEventListener(Event.COMPLETE, fin_chargement_image);
	chargeur_image.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, erreur_chargement);
	chargeur_image.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, erreur_securite);
	chargeur_image.load(new URLRequest(url_image));
}
function placer_image_menu(pointeur:int, compteur:int):void
{
	compteur_image = compteur;
	if (pointeur + compteur_image < longueur_liste) chargement_image(image_video[pointeur + compteur_image]);
	else return;
	switch (compteur)
	{
		case 0 : formater_texte(fond_menu.texte_titre_1, titre_video[pointeur + compteur_image], true, false); break;
		case 1 : formater_texte(fond_menu.texte_titre_2, titre_video[pointeur + compteur_image], true, false); break;
		case 2 : formater_texte(fond_menu.texte_titre_3, titre_video[pointeur + compteur_image], true, false); break;
		case 3 : formater_texte(fond_menu.texte_titre_4, titre_video[pointeur + compteur_image], true, false); break;
	}
}
function commande_play(index:int):void
{
	if (!etat_pret)
	{
		bouton_macaron.visible = false;
		if (index != -1) pointeur_liste = index;
		if (fond_commande.bouton_aleatoire_on.visible) pointeur_liste = generation_video_aleatoire(longueur_liste);
		url_page = adresse_video[pointeur_liste];
		formater_texte(texte_annonce, titre_video[pointeur_liste], true, false);
		chargement_page(url_page);
	}
	else
	{
		if (etat_pause)
		{
			flux_video.togglePause();
			etat_pause = false;
		}
	}
}
function effacer_texte_menu():void
{
	fond_menu.texte_titre_1.text = "";
	fond_menu.texte_titre_2.text = "";
	fond_menu.texte_titre_3.text = "";
	fond_menu.texte_titre_4.text = "";
}
// Evènements
function fin_chargement_image(e:Event):void
{
	switch (compteur_image)
	{
		case 0 :
			fond_menu.cadre_image_1.addChild(Bitmap(chargeur_image.content));
			placer_image_menu(pointeur_image, 1);
			break;
		case 1 :
			fond_menu.cadre_image_2.addChild(Bitmap(chargeur_image.content));
			placer_image_menu(pointeur_image, 2);
			break;
		case 2 :
			fond_menu.cadre_image_3.addChild(Bitmap(chargeur_image.content));
			placer_image_menu(pointeur_image, 3);
			break;
		case 3 :
			fond_menu.cadre_image_4.addChild(Bitmap(chargeur_image.content));
	}
}
function fin_chargement_liste_xml(e:Event):void
{
	var texte_xml:XML = new XML(e.target.data);
	var videos:XMLList = texte_xml.elements();
	longueur_liste = 0;
	for each (var ligne:XML in videos)
	{
		adresse_video[longueur_liste] = ligne.adresse;
		titre_video[longueur_liste] = ligne.titre;
		image_video[longueur_liste] = ligne.image;
		longueur_liste++;
	}
	pointeur_liste = 0;
	pointeur_image = 0;
	if (adresse_video.length <= 1)
	{
		fond_commande.bouton_precedent.visible = false;
		fond_commande.bouton_suivant.visible = false;
		fond_commande.bouton_menu.visible = false;
	}
	if (!bouton_macaron.visible) action_bouton_play(null);
}
function status_reseau(e:NetStatusEvent):void
{
	switch (e.info.code)
	{
		case "NetConnection.Connect.Success":
			connexion_flux();
			position_video = 0;
			break;
		case "NetStream.Play.StreamNotFound":
			formater_texte(fond_commande.texte_progression, "Erreur streaming !", true, false);
	}
}
function progression_video(e:TimerEvent):void
{
	if (meta_video == null) return;
	video.smoothing = fond_commande.bouton_lissage_on.visible;
	duree_video = meta_video.duration;
	position_video = flux_video.time;
	fond_commande.barre_chargement.width = (flux_video.bytesLoaded / flux_video.bytesTotal) * 200;
	fond_commande.barre_progression.width = (position_video  * 200) / duree_video;
	formater_texte(fond_commande.texte_progression, conversion_horloge(position_video) + "|" + conversion_horloge(duree_video), true, false);
	volume_video.volume = (fond_commande.bouton_volume.x - 575) / 50;
	flux_video.soundTransform = volume_video;
	if (position_video >= duree_video)
	{
		if (fond_commande.bouton_repetition_on.visible) flux_video.seek(0);
		else action_bouton_stop(null);
	}
}
function erreur_securite_reseau(e:SecurityErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur sécurité !", true, false);
}
        
function erreur_asynchrone_reseau(e:AsyncErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur synchronisation !", true, false);
}
function erreur_chargement(e:IOErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur chargement !", true, false);
	etat_chargement_page = false;
}
function erreur_securite(e:SecurityErrorEvent):void
{
	formater_texte(fond_commande.texte_progression, "Erreur sécurité !", true, false);
	etat_chargement_page = false;
}
function action_bouton_play(e:MouseEvent):void
{
	if (fond_menu.visible) action_bouton_menu(null);
	commande_play(-1);
}
function action_bouton_pause(e:MouseEvent):void
{
	if (etat_pret)
	{
		flux_video.togglePause();
		etat_pause = !etat_pause;
	}
}
function action_bouton_stop(e:MouseEvent):void
{
	if (!etat_pret) return;
	timer_video.stop();
	flux_video.close();
	ecran_video.removeChild(video);
	ecran_video.addChild(bouton_macaron);
	ecran_video.addChild(texte_annonce);
	etat_pret = false;
	etat_pause = false;
	bouton_macaron.visible = true;
}
function action_bouton_precedent(e:MouseEvent):void
{
	action_bouton_stop(null);
	pointeur_liste += - 1;
	if (pointeur_liste < 0) pointeur_liste = longueur_liste - 1;
	url_page = adresse_video[pointeur_liste];
	action_bouton_play(null);
}
function action_bouton_suivant(e:MouseEvent):void
{
	action_bouton_stop(null);
	pointeur_liste += 1;
	if (pointeur_liste >= longueur_liste) pointeur_liste = 0;
	url_page = adresse_video[pointeur_liste];
	action_bouton_play(null);
}
function action_bouton_retour(e:MouseEvent):void
{
	if (!etat_pret) return;
	flux_video.seek(0);
}
function action_bouton_lissage_off(e:MouseEvent):void {fond_commande.bouton_lissage_on.visible = true;}
function action_bouton_lissage_on(e:MouseEvent):void {fond_commande.bouton_lissage_on.visible = false;}
function action_bouton_repetition_off(e:MouseEvent):void {fond_commande.bouton_repetition_on.visible = true;}
function action_bouton_repetition_on(e:MouseEvent):void {fond_commande.bouton_repetition_on.visible = false;}
function action_bouton_aleatoire_off(e:MouseEvent):void {fond_commande.bouton_aleatoire_on.visible = true;}
function action_bouton_aleatoire_on(e:MouseEvent):void {fond_commande.bouton_aleatoire_on.visible = false;}
function action_bouton_volume_up(e:MouseEvent):void {modification_volume = false;}
function action_bouton_volume_down(e:MouseEvent):void {modification_volume = true;}
function action_bouton_volume_move(e:MouseEvent):void 
{
	if ((modification_volume) && (e.stageX >= 580) && (e.stageX <= 630)) fond_commande.bouton_volume.x = e.stageX - 5;
}
function action_barre_progression(e:MouseEvent):void
{
	if (e.localX < fond_commande.barre_chargement.width) flux_video.seek(int((e.localX * duree_video) / 200));
}
function masquer_bouton(e:MouseEvent):void
{
	fond_commande.masque_bouton.x = e.stageX - e.localX;
	fond_commande.masque_bouton.y = e.stageY - e.localY - fond_commande.y;
	fond_commande.masque_bouton.visible = true;
}
function demasquer_bouton(e:MouseEvent):void {fond_commande.masque_bouton.visible = false;}
function fin_chargement_texte(e:Event):void
{
	recherche_adresse_directe(e.target.data);
	etat_chargement_page = false;
	initialisation_connexion();
}
function action_ecran_video_out(e:MouseEvent):void {fond_commande.visible = false;}
function action_ecran_video_over(e:MouseEvent):void
{
	fond_commande.visible = true;
	addChild(fond_commande);
}
function action_bouton_menu(e:MouseEvent):void
{
	fond_menu.visible = !fond_menu.visible;
	if (fond_menu.visible)
	{
		effacer_texte_menu();
		placer_image_menu(pointeur_image, 0);
		addChild(fond_menu);
	}
	else removeChild(fond_menu)
}
function action_bouton_up(e:MouseEvent):void
{
	if (pointeur_image > 0)
	{
		effacer_texte_menu();
		pointeur_image -= 1;
	}
	placer_image_menu(pointeur_image, 0);
}
function action_bouton_down(e:MouseEvent):void
{
	if (pointeur_image + 4 < longueur_liste)
	{
		effacer_texte_menu();
		pointeur_image += 1;
	}
	placer_image_menu(pointeur_image, 0);
}
function action_bouton_image_1(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image);
}
function action_bouton_image_2(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image + 1);
}
function action_bouton_image_3(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image + 2);
}
function action_bouton_image_4(e:MouseEvent):void
{
	action_bouton_menu(null);
	action_bouton_stop(null);
	commande_play(pointeur_image + 3);
}
function action_bouton_plein_ecran(e:MouseEvent):void
{
	if (stage.displayState == StageDisplayState.FULL_SCREEN) stage.displayState = StageDisplayState.NORMAL;
	else stage.displayState = StageDisplayState.FULL_SCREEN;
}
function action_bouton_cadrage_off(e:MouseEvent):void
{
	fond_commande.bouton_cadrage_on.visible = true;
	cadrage_video();
}
function action_bouton_cadrage_on(e:MouseEvent):void
{
	fond_commande.bouton_cadrage_on.visible = false;
	cadrage_video();
}

Conclusion :


Maintenant, deux versions sont disponibles. Une en AS2+, et une en AS3 avec un énorme package. J'ai fait ce que j'ai pu, car j'ai très peu de connaissances en flash.

Vous pouvez modifier et utiliser ces sources à votre gré.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
Il serait bien que l'on recentre le débat sur la source elle-même, si c'était possible ...

Peg'
Admin Codes-sources.
Messages postés
59
Date d'inscription
vendredi 18 juillet 2008
Statut
Membre
Dernière intervention
31 mars 2011

@GREMLINS7

Yes ! C'est rare de rencontrer quelqu'un qui s'arrache encore les cheveux avec de l'assembleur.

Je n'utilise pas les compilateur C pour faire de l'assembleur, car comme tu le dis, avec quelques lignes, la EEPROM est pleine. Par contre, je suis fidèle au MCS-51 de Intel, et j'adore utiliser ces µC pour mes montages. Je suis avant tout électronicien, et la programmation "évolué", c'est pour m'amuser. Je vais aller faire un tour sur ta page. Si tu veux voir quelques montages, tu peux te rendre à l'adresse suivante http://www.erysoft.fr/erytronic/index.html.

Je cherchais justement une personne de ma trempe ...
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009

Saluté
C'est vrai que les programmeurs assembleur ont tendances a disparaitre...j'étais aussi un fanatique de la prog assembleur sous PC y a quelques années, maintenant j'en fait que pour programmer mes cartes électroniques quand je fous a genoux les pross ou les microcontroleurs. Parceque sur des ptit pross quand tu programme en C t'a vite fait de les faire ramer, donc assembleur oblige...
C'est a tel point que l'autre jour je test la nouvelle carte mbed (si ça interresse quelqu'un :http://mbed.org/) qui possede un ARM 32 bit et, en programmant en C, j'ai réussit a le mettre a plat avec une fonction a deux balles qui génère une sinusoïde !!!! Heureusement ça coute pas cher, mais je fais la même chose en assembleur avec un pauvre PIC16F, donc langage de haut niveau +++ mais perfo ----
Messages postés
59
Date d'inscription
vendredi 18 juillet 2008
Statut
Membre
Dernière intervention
31 mars 2011

@Tous

Objet, ou pas objet, au début de l'ère informatique, tout n'était que des "1" et des "0". L'assembleur a permis de développer les premières applications (API), puis de fil en aiguille les langages "évolués" ont vu le jour. Mais tout repose sur l'assembleur. Un objet fait appel à une fonction qui regroupe une structure plus ou moins évoluée, puis cette fonction appelle des API.

De nos jours, l'assembleur est un langage mort, comme le Latin, mais il reste le plus puissant ... et surtout le moins compréhensible pour le commun des mortels.

C'était simplement pour vous dire que les langages dits évolués, sont simples d'utilisation, et qu'il n'est pas bien compliqué de programmer en 5 minutes, une application qui vous aurait demandée une semaine de travail en assembleur. Maintenant, le C est le standard, alors qui connait le C peut programmer ce qu'il veut.

Pour en revenir à l'AS3 POO ... oui, c'est très puissant, mais parfois les résultats peuvent être incohérents, si une des sous-couches (API) comporte une erreur.
Messages postés
337
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
2 novembre 2010

VBtoTRASH est développeur assembleur, excusez du peu.
je penses que niveau débutant y'a pire.

pis je m'exprime en français pourtant:
"...magie de l'as3, tout est objet !
... un .as donc peut contenir..."

et pour chipoter, dans ce contexte, j'utilisais le terme méthode pour définir des objets de type Function
(que l'on définit ici dans des fichiers externes, cf. flash.utils)

sinon, viens d'me l'ver, alors suis peut être un peu abrupte sur ce com ;)
Afficher les 18 commentaires

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.