Wheelmedia

Soyez le premier à donner votre avis sur cette source.

Vue 7 655 fois - Téléchargée 689 fois

Description

Amélioration du composant defileMedia
voir : http://www.flashkod.com/codes/DEFILEMEDIA-COMPOSANT-AS3-GESTION-GALERIE-MEDIA-CLASS-DEBUGTRACE_45886.aspx

Intégration des classes wheel et side de TOP30
voir : http://www.flashkod.com/codes/CLASS-WHEEL-SIDE_46028.aspx

Amélioration aussi de la classe debugTrace gérant la sortie des traces dans un fichier log, ou dans un textAera selon le paramètrage.
Gére aussi des statistiques sur les fonctions (nombre d'appel, mémoire utilisée, temps d'exécution)

voir la démo dans http://yvars.lamarmite.fr/WheelParam.html

Source / Exemple :


// ----------------------------------------------------
// - Tomboul (tomboul@lamarmite.fr) http://ww.lamarmite.fr
// - 02/2008
// - test du composant WheelMedia
// ----------------------------------------------------
import fl.video.*
import fl.containers.*;
import fl.controls.*;
import marmite.*;

Security.loadPolicyFile("http://www.lamarmite.fr/crossdomain.xml")

// -------------------------------
// gestion debug
// -------------------------------
var bug:debugTrace = new debugTrace("testClip");
bug.out=false;
/*bug.stageDebug=stage;*/
bug.addDebugFonc("WheelModified",true);
bug.addDebugFonc("XmlModified",true);
bug.addDebugFonc("handleMediaLoaded",true);
bug.addDebugFonc("initDynamicDisplay",true);
bug.addDebugFonc("initStaticDisplay",true);
bug.addDebugFonc("WheelMedia-initWheel",true);
bug.addDebugFonc("WheelMedia-clearWheel",true);
bug.addDebugFonc("WheelMedia-drawThumbs",false);
bug.addDebugFonc("WheelMedia-drawThumb",false);
bug.addDebugFonc("WheelMedia-addMedia",false);
bug.addDebugFonc("WheelMedia-changeDefile",true);
bug.addDebugFonc("WheelMedia-outDefile",true);
bug.addDebugFonc("WheelMedia-draw",true);
bug.addDebugFonc("WheelMedia-readDataAndInitMedia",true);
bug.addDebugFonc("WheelMedia-finDuChargement",true);
bug.addDebugFonc("WheelMedia-clearMedia",true);
bug.addDebugFonc("WheelMedia-initMedia",true);
bug.addDebugFonc("WheelMedia-initClipMedia",true);
bug.addDebugFonc("Wheel-_rotatePoints",false);
bug.addDebugFonc("Wheel-setSides",true);
bug.addDebugFonc("Wheel-stop",true);
bug.addDebugFonc("Wheel-start",true);
bug.addDebugFonc("Wheel-Wheel",true);
bug.memory=true;
/*bug.traceArea=traceText;
bug.traceFunction("all");
bug.memory=false;
bug.traceArea=null;
bug.log=true;
bug.urlLog="http://127.0.0.1/testFlash";*/

// -------------------------------
// VARIABLES D'AFFICHAGE
// -------------------------------
// affichage statique
var debug_chk:CheckBox=new CheckBox();
var vertical_chk:CheckBox=new CheckBox();
var incr_input:TextInput=new TextInput();
var sensible_input:TextInput=new TextInput();
var vitesse_input:TextInput=new TextInput();
var valid_btn:Button=new Button();
var xml_btn:Button=new Button();
var allFonc:Button=new Button();
var xml_input:TextArea=new TextArea();
var traceText:TextArea=new TextArea();
// evement pour le bouton de validation des modifications
valid_btn.addEventListener(MouseEvent.CLICK, WheelModified);
xml_btn.addEventListener(MouseEvent.CLICK, XmlModified);
allFonc.addEventListener(MouseEvent.CLICK, debugAllFonc);

// affichage dynamique (selon vertical ou horizontal)
// coordonnées clip du calque WheelMedia en fonction 
// du type de défilement (horizontal ou vertical)
var coord_V:Object ={	Wheel:Object({w:90 ,h:360,x:48 ,y:209,r:0}),
						titre: Object({w:452,h:26 ,x:96,y:28}),
						media: Object({w:452,h:338,x:96,y:58})};
var coord_H:Object ={	Wheel:Object({w:370,h:80,x:275,y:364,r:0}),
						titre: Object({w:372,h:26 ,x:89,y:54}),
						media: Object({w:370,h:244,x:91,y:80})};

var vid:VideoPlayer;
var pict:UILoader;
var titre:TextArea=new TextArea();
var mc:Sprite = new Sprite();
initStaticDisplay();

// -------------------------------
// COMPOSANT WheelMedia
// -------------------------------
var Wheel:WheelMedia = new WheelMedia();
Wheel.debug=bug;
Wheel.xmlFile="defileMedia.xml";
Wheel.vitesse=80;
Wheel.sensible=4;
Wheel.incr=-1;
Wheel.sensDefilement="horizontal";
WheelCoord(coord_H);
// gestion de l'évenement loaded du composant WheelMedia présent sur la scène
Wheel.addEventListener(mediaEvent.MEDIA_LOADED, handleMediaLoaded);
addChild(Wheel);

// -------------------------------
// VARIABLES GLOBALES
// -------------------------------
var pathVideo:String;
var pathImage:String;
var isPict:Boolean=false;
var isVid:Boolean=false;

// -------------------------------
// fin chargement WheelMedia
// -------------------------------
function handleMediaLoaded(e:mediaEvent):void {
	bug.fonction("handleMediaLoaded",true);
	
	if(e.mediaOK.result==true) {
		bug.trace("OK");
		
		// récupère les données XML
		var galerie:XML=Wheel.WheelMediaData;
		
		// chemin pour les formats moyens des medias
		pathVideo=galerie.dossier.video.@url+galerie.dossier.video.@normales;
		pathImage=galerie.dossier.image.@url+galerie.dossier.image.@normales;
		
		// titre global
		titre.text="Titre : "+galerie.titre.@texte+" ("+e.mediaOK.error+")";
		
		// evenement : media selectionné
		Wheel.addEventListener(mediaEvent.MEDIA_SELECTED, handleMediaSelected);
		
		initDynamicDisplay();
			
	}
	// echec
	else {
		trace("ECHEC"+e.mediaOK.error);
		// (voir à ajouter une info texte de l'erreur
		titre.text="erreur chargement des médias : "+e.mediaOK.error;
	}
	
	// trace de tout les enfants présent sur la scène
	debugAllFonc(null)

	
	bug.finFonction();
}

// -------------------------------
// e:mediaEvent est un objet contenant deux objet de type XML
// data : contenu de la ligne xml <media ....> selectionnée
// dossier : contenu des informations des path (voir xml)
// musique : contenu des informations musicales (voir xml)
// -------------------------------
function handleMediaSelected(e:mediaEvent):void {
	bug.fonction("handleMediaSelected",true);
	
	// infos media selectionné
	var mediaXml:XML=e.mediaData;
	
	if(isPict==true) {
		removeChild(pict);
	}
	if(isVid==true) {
		// stope la video
		if(vid.state==VideoState.PLAYING) {
			vid.stop();
			vid.close();
			removeChild(vid);
		}
	}
	
	isPict=false;
	isVid=false;
	pict=null;
	vid=null;

	
	// image
	if (mediaXml.@type=="image") {
		pict = new UILoader();	
		addChild(pict);	
		bug.trace("image : "+mediaXml.@src);
		titre.text="Image : "+mediaXml.@titre;
		pict.source=pathImage+"/"+mediaXml.@src;
		isPict=true;
		
	// video
	} else if (mediaXml.@type=="video") {
		vid = new VideoPlayer();
		addChild(vid);
		bug.trace("video : "+mediaXml.@src);
		titre.text="Video : "+mediaXml.@titre;
		vid.play(pathVideo+"/"+mediaXml.@src);
		isVid=true;
	}
	initDynamicDisplay();
	

	bug.finFonction();
	
}

// -----------------------------------------
// modification paramètres du composant
// -----------------------------------------
function WheelModified(e:Event):void {
	bug.fonction("WheelModified",true);
	// modification info debug
	if(debug_chk.selected==true) {
		bug.memory=true;
		bug.out=true;
		bug.traceArea=traceText;
	}
	else {
		if(bug.out && bug.traceArea!=null) {
			bug.traceArea.text="";
		}
		bug.memory=false;
		bug.out=false;
	}
		

	// vitesse de défilement (1 à 100)
	Wheel.vitesse=Number(vitesse_input.text);

	// sensibilité souris pour modifier
	// la vitesse de défilement
	Wheel.sensible=Number(sensible_input.text);
	
	// incrémentation de base pour le défilement
	// < 0 => de haut en bas (ou de gauche à droite)
	// > 0 => de bas en haut (ou de droite à gauche)
	// = 0 => Wheelment pas à pas
	Wheel.incr=Number(incr_input.text);
	initDynamicDisplay();
	
	bug.trace("addChild Wheel");
	
	bug.finFonction();
}

// -----------------------------------------
// modification paramètres du composant
// -----------------------------------------
function XmlModified(e:Event):void {
	bug.fonction("XmlModified",true);	
	Wheel.WheelMediaData=XML(xml_input.text);
	bug.finFonction();
}

// ----------------------------------------------------
// declanche l'affichage des statisques des fonctions
// ----------------------------------------------------
function debugAllFonc(e:Event) {
	if(debug_chk.selected==false) {
		bug.memory=true;
		bug.traceArea=traceText;
	}
	bug.traceFunction("all");
	if(debug_chk.selected==false) {
		bug.memory=false;
		bug.traceArea=null;
	}
}

// -----------------------------------------
// initialisation coordonnée d'affichage
// du media selectionné
// -----------------------------------------
function initDynamicDisplay():void {

	bug.fonction("initDynamicDisplay",true);
	var coord:Object;
	// sens vertical ou horizontal

	if(vertical_chk.selected==true && Wheel.sensDefilement=="horizontal") {
		Wheel.sensDefilement="vertical";
		WheelCoord(coord_V);
	}
	else if(vertical_chk.selected==false && Wheel.sensDefilement=="vertical") {
		Wheel.sensDefilement="horizontal";
		WheelCoord(coord_H);
	}

	if(Wheel.sensDefilement=="vertical") coord=coord_V;
	else coord=coord_H;
	
	// conteneur media selectionné
	if(isPict) {
		pict.x=coord.media.x+1;
		pict.y=coord.media.y+1;
		pict.width=coord.media.w-4;
		pict.height=coord.media.h-4;
	}
	if(isVid) {
		vid.x=coord.media.x+1;
		vid.y=coord.media.y+1;
		vid.width=coord.media.w-4;
		vid.height=coord.media.h-4;
	}

	xml_input.text=Wheel.WheelMediaData;

	bug.finFonction();
}

function WheelCoord(coord:Object) {
	Wheel.x=coord.Wheel.x;
	Wheel.y=coord.Wheel.y;
	Wheel.width=coord.Wheel.w;
	Wheel.height=coord.Wheel.h;
	mc.x=coord.media.x;
	mc.y=coord.media.y;
	mc.width=coord.media.w;
	mc.height=coord.media.h;
	titre.x=coord.titre.x;
	titre.y=coord.titre.y;
	titre.width=coord.titre.w;
	titre.height=coord.titre.h;
}

// -----------------------------------------
// affichage zone de texte soit XML
// ou debug
// -----------------------------------------
function initStaticDisplay():void {
	
	bug.fonction("initStaticDisplay",true);

	debug_chk.selected=false;
	debug_chk.label="debug";
	debug_chk.x=75;
	debug_chk.y=408;
	debug_chk.width=62;
	debug_chk.height=22;
	addChild(debug_chk);
	
	vertical_chk.selected=false;
	vertical_chk.label="vertical";
	vertical_chk.x=7;
	vertical_chk.y=408;
	vertical_chk.width=70;
	vertical_chk.height=22;
	addChild(vertical_chk);

	incr_input.text="-1";
	incr_input.x=215;
	incr_input.y=410;
	incr_input.width=36;
	incr_input.height=18;
	addChild(incr_input);

	sensible_input.text="4";
	sensible_input.x=330;
	sensible_input.y=410;
	sensible_input.width=36;
	sensible_input.height=18;
	addChild(sensible_input);

	vitesse_input.text="80";
	vitesse_input.x=444;
	vitesse_input.y=410;
	vitesse_input.width=36;
	vitesse_input.height=18;
	addChild(vitesse_input);

	valid_btn.label="valider";
	valid_btn.x=485;
	valid_btn.y=408;
	valid_btn.width=52;
	valid_btn.height=22;
	addChild(valid_btn);

	xml_btn.label="change info xml";
	xml_btn.x=6;
	xml_btn.y=432;
	xml_btn.width=100;
	xml_btn.height=22;
	addChild(xml_btn);

	allFonc.label="debug all fonc";
	allFonc.x=438;
	allFonc.y=432;
	allFonc.width=100;
	allFonc.height=22;
	addChild(allFonc);

	xml_input.x=0;
	xml_input.y=459;
	xml_input.width=550;
	xml_input.height=241;
	addChild(xml_input);

	traceText.x=551;
	traceText.y=91;
	traceText.width=550;
	traceText.height=609;
	addChild(traceText);
	
	mc.graphics.lineStyle(2, 0xFFFF00, 1 );
	mc.graphics.beginFill(0x999933,1);
	mc.graphics.drawRect(0,0,coord_V.media.w,coord_V.media.h);
	mc.graphics.endFill();
	addChild(mc);
	
	// titre + infos chargement
	addChild(titre);
		
	// conteneur media
	bug.finFonction();
}

Conclusion :


le source ici est dans le flash Wheelparam.fla qui test le composant et ses paramètres
Les sources sont dans le zip

Codes Sources

Ajouter un commentaire Commentaires
Messages postés
25
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
26 mai 2009

Je viens d'ajouter wheelMedia.fla qui contient le composant. wheelParam.fla teste le composant, permet de modifier les paramètres du composant et utilise la classe DebugTrace.
A chaque compilation de WheelParam, Flash CS3 va chercher les modifications éventuelles dans WheelMedia, et il prends en comptes aussi toutes les modifications effectuées dans les fichier AS contenus dans le dossier marmite

Pour une utilisation optimum du composant, il vaut mieux enlever l'utilisation et tout les appels à la classes debugTrace.

La classe debugTrace permet des faire des statistiques pour toutes les fonctions voulues, ces stat portent sur le nombre d'appel, la quantité de mémoire utilisée, et le nombre d'enfants créés
Messages postés
25
Date d'inscription
vendredi 15 septembre 2006
Statut
Membre
Dernière intervention
26 mai 2009

Action script 3 et flash CS3
Messages postés
47
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
16 novembre 2010

Bjr tomboul,

Ta source doit être exécutée sur kelle version de flash stp ?
J'ai un "Unexpected file format" à l'ouverture.

Merci à toi

Cdlt.

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.