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
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.