Accueil > Forum > > > > Tree, xml, et Player vidéo...
Tree, xml, et Player vidéo...
dimanche 12 juillet 2009 à 07:41:21 |
Tree, xml, et Player vidéo...

tristancoindet
|
Bonjour, j'ai un petit souci, impossible de le résoudre...
1) J'ai un player vidéo avec fichier xml et défilement des images en carrousel. Tout cela fonctionne à merveille.
2)J'ai un composant Tree qui lit le même fichier xml . ça marche aussi. Je vois les fichier défilés, je peux faire une recherche dedans. J'arrive à récupérer la valeur des fichiers sélectionnés, les images par exemple, je peux les charger dans le swf avec un composant loader. Le texte en les chargeant dans un texte field.
Mais je n'arrive pas à faire en sorte qu'en cliquant sur un node du xml, la vidéo se lance , bien que j'arrive à récupérer le chemin, le titre, ou encore la description de mes vidéos avec le tree, et à les utiliser pour faire autre chose, genre afficher les images dans un loader, ou le texte dans un texte field...
Voila, si quelqu'un a la réponse, ou une piste, je lui en serais vraiment très reconnaissant et son nom restera synonyme de joie et de félicité dans ma famille sur au moins 10 générations ! ps : si vous voulez le .fla et les xml je fais tourner c'est pas un problème.
Références : TreeDoc est une classe que j'ai trouvé ici-même, facilement retrouvable sur le site. Le player avec choix des vidéos carrousel est de Caesar. Le xml : "path" est la valeur du chemin de la vidéo. "pic" est la valeur du nom de l'image "desc" est la valeur de la description texte de la vidéo. "Title" est la valeur du titre de la vidéo.
ça c'est le code du Tree :
import com.wikimb.TreeDoc
var single = new TreeDoc(docTree, searchField, activeChange); single.load("gallery.xml"); single.onSelect = function (item:XMLNode) { trace(item); } // fonction qui récupère la valeur src du noeud sélectionné var treeListener:Object = new Object(); treeListener.change = function(evt:Object) { var treeNode:XMLNode = evt.target.selectedItem; if (treeNode.attributes.path != undefined) //C'est ici qu'il me manque quelque chose je pense. Du genre ce qui est en rouge mais pour lancer la vidéo, non pas pour afficher du texte ou les image... InstanceName .load (treeNode.attributes.path); } docTree.addEventListener("change", treeListener); stop();
ça c'est le code pour le player vidéo :
import mx.transitions.Tween; import mx.transitions.easing.*; data_holder.swapDepths(4000); var Centerx:Number = Stage.width/2; var Centery:Number = Stage.height/2-50; var tween_type= Elastic.easeOut; var tween_type2= Bounce.easeOut; var h:Number = 0;//height of the circle var w:Number;//the width of the circle var group:Array = [];//items container var pics:Array = new Array();//item`s data container var theta_angle:Number = 0;//the angle of rotation flip the items var xl:XML = new XML(); xl.ignoreWhite = true; xl.onLoad = function(ok) { if (ok) { xdata = this.firstChild; for (var k = 0; k<xdata.childNodes.length; k++) { var MCtype = xdata.childNodes[k].attributes.path.substr(xdata.childNodes[k].attributes.path.length-3,xdata.childNodes[k].attributes.path.length); //fill the array of item`s data pics.push({path:xdata.childNodes[k].attributes.path,pic:xdata.childNodes[k].attributes.pic, title:xdata.childNodes[k].attributes.title, desc:xdata.childNodes[k].attributes.desc}); } //calculate the width of circle to automatic resized //by the increase or decrease the number of images w = pics.length*90; run(); } }; xl.load("gallery.xml"); function run() { for (var i:Number = 0; i<pics.length; i++) { var itm:MovieClip = _root.attachMovie("items", "item"+i, i, {_x:Centerx+w/2*Math.sin(Math.PI*2*i/pics.length), _y:Centery+h/2*Math.cos(Math.PI*2*i/pics.length)}); itm.img_1.inner2.loadMovie(pics[i].pic); itm.img_2.inner3.loadMovie(pics[i].pic); preload(itm); group.push(itm);
} moveCircle();//the main function who make items move } function preload(mc){ mc.onEnterFrame = function(){ this.img_1.inner2._alpha = 0;//make the mc that hold the movieclip change alpha to 0 this.img_1.inner3._alpha = 0;//make the mc that hold the reflection movieclip change alpha to 0 var tb = this.img_1.inner2.getBytesTotal(); var lb = this.img_1.inner2.getBytesLoaded(); if(tb>10 && lb>=tb){ this.loaders._visible = false; delete this.onEnterFrame; var tw_m1:Tween = new Tween(this.img_1.inner2, "_alpha", tween_type, 0, 100, 2, true);//make it fade in var tw_m2:Tween = new Tween(this.img_1.inner3, "_alpha", tween_type, 0, 100, 2, true);//make it fade in } } } function moveCircle() { _root.onEnterFrame = function() { theta_angle += 0.06*Math.PI*(_root._xmouse-Stage.width/2)/Stage.width;//0.1 correspond à la vitesse theta_angle = (theta_angle-Math.PI)%(2*Math.PI)+Math.PI; theta_angle = (theta_angle+Math.PI)%(2*Math.PI)-Math.PI; h = (_root._ymouse-Stage.height/2)*0;//0correspond à l'angle(vue du dessus/dessous) for (var i in group) { var itm = group[i]; var t:Number = Math.PI*2*i/pics.length+theta_angle; t = (t-Math.PI)%(2*Math.PI)+Math.PI; t = (t+Math.PI)%(2*Math.PI)-Math.PI; itm._x = Centerx+w/2*Math.sin(t); itm._y = Centery+h/2*Math.cos(t); itm._xscale = itm._yscale=100+30*Math.cos(t); itm._xscale *= Math.cos(t); t = 1-Math.abs(t)/Math.PI; itm.swapDepths(Math.round(t*2*pics.length)); itm.title = pics[i].title;//store the title itm.desc = pics[i].desc;//store the description itm.flvFile = pics[i].path; itm.xp = itm._x;//store the x position itm.yp = itm._y;//store the y position itm.xs = itm._xscale;//store the xscale itm.ys = itm._yscale;//store the yscale itm.swp = Math.round(t*2*pics.length);//store the depth itm.img_1.inner2.onRelease = released; } } } //on item released function released() { for (var i = 0; i<pics.length; i++) { var itm:MovieClip = _root["item"+i]; delete itm.img_1.inner2.onRelease; delete _root.onEnterFrame; if (itm != this._parent._parent) {//its not the choise var tw:Tween = new Tween(itm, "_xscale", tween_type, itm._xscale, itm._xscale, 2, true); var tw2:Tween = new Tween(itm, "_yscale", tween_type, itm._yscale, itm._yscale, 2, true); var tw3:Tween = new Tween(itm, "_alpha", tween_type, 100, 0, 2, true); } else { itm.swapDepths(2000); Details_mc.title.text = itm.title; Details_mc.detail.text = itm.desc; var tw:Tween = new Tween(itm, "_xscale", tween_type, itm._xscale, 80, 2, true); var tw2:Tween = new Tween(itm, "_yscale", tween_type, itm._yscale, 80, 2, true); var tw3:Tween = new Tween(itm, "_x", tween_type, itm._x, 580, 2, true); var tw4:Tween = new Tween(itm, "_y", tween_type, itm._y, 60, 2, true); var tw5:Tween = new Tween(data_holder,"_y",tween_type,-100,70,2,true); var tw6:Tween = new Tween(Video_mc,"_x",tween_type,Video_mc._x,255,2,true); var tw7:Tween = new Tween(Details_mc,"_x",tween_type,Details_mc._x,700,2,true); Video_mc.video_hl.fill_video(itm.flvFile); var mc_itm:Object = this; tw.onMotionStopped = function() { mc_itm.onRelease = unReleased; } } } }
//on item unReleased function unReleased() { delete this.img_1.inner2.onRelease; var tw:Tween = new Tween(data_holder,"_y",Strong.easeOut,70,-500,1,true); for (var i = 0; i<pics.length; i++) { var itm:MovieClip = _root["item"+i]; if (itm != this._parent._parent) { var tw:Tween = new Tween(itm, "_xscale", tween_type, itm._xscale, itm._xscale, 2, true); var tw2:Tween = new Tween(itm, "_yscale", tween_type, itm._yscale, itm._yscale, 2, true); var tw3:Tween = new Tween(itm, "_alpha", tween_type, 0, 100, 2, true); } else { itm.swapDepths(itm.swp); var tw:Tween = new Tween(itm, "_xscale", tween_type, itm._xscale, itm.xs, 2, true); var tw2:Tween = new Tween(itm, "_yscale", tween_type, itm._yscale, itm.ys, 2, true); var tw3:Tween = new Tween(itm, "_x", tween_type, itm._x, itm.xp, 2, true); var tw4:Tween = new Tween(itm, "_y", tween_type, itm._y, itm.yp, 2, true); var tw6:Tween = new Tween(Video_mc,"_x",tween_type,Video_mc._x,-350,2,true); var tw6:Tween = new Tween(Details_mc,"_x",tween_type,Details_mc._x,1200,2,true); tw6.onMotionStopped = function(){ Video_mc.gotoAndPlay(1); } tw.onMotionStopped = function() { for (var i = 0; i<pics.length; i++) { var itm:MovieClip = _root["item"+i]; moveCircle(); itm.img_1.inner2.onRelease = released;
} } } } }
Un autre bout de code pour le player : import mx.transitions.Tween; import mx.transitions.easing.*; var total_length; var Mwidth; var stageWidth:Number = Stage.width; var stageHight:Number = Stage.height; v_holder.No_mc._visible = false; var Mheight; var video_h:MovieClip = v_holder.screen_h; var v_tools:MovieClip = _parent.tools; //prepare for local connection var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); video_h.v_screen.attachVideo(ns); this.createEmptyMovieClip("snd_holder",0); snd_holder.attachAudio(ns); var Audio_holder:Sound = new Sound(snd_holder); //play function. function fill_video(path) { ns.play(path);//this sentence is the basic to play movie v_tools.pplay_btn.gotoAndStop(2);//switch between pause and play }
//-----------------------The Monitor Function----------- ns.onStatus = function(vInfo:Object):Void { trace(vInfo.code); if (vInfo.code == "NetStream.Play.Stop") { v_holder.buffer_mc._visible = false; v_holder.No_mc._visible = false; } if (vInfo.code == "NetStream.Play.StreamNotFound") { v_holder.buffer_mc._visible = false; v_holder.No_mc._visible = true; } if (vInfo.code == "NetStream.Buffer.Full") { v_holder.buffer_mc._visible = false; v_holder.No_mc._visible = false; } if (vInfo.code == "NetStream.Buffer.Empty") { v_holder.buffer_mc._visible = true; v_holder.No_mc._visible = false; } }; //--- on Recieved meta Data ns.onMetaData = function(vInfo:Object):Void { total_length = vInfo.duration; Mwidth = vInfo.height; Mheight = vInfo.height; resizeVideo(); }; function resizeVideo() { var square = 250; if (Mwidth) { if (Mwidth>Mheight) { newW = square; newH = Mheight/(Mwidth/newW); } else { newH = square; newW = Mwidth/(Mheight/newW); } v_holder.screen_h.v_screen._width = newW; v_holder.screen_h.v_screen._height = newH; v_holder._x = (back._width-v_holder._width)/2; v_holder._y = (back._height-v_holder._height)/2; } } v_tools.slider._x = v_tools.slider_time._x; v_tools.buffer_bg._width = 0; t_slide = false; onEnterFrame = function () { //67 if (!t_slide) { v_tools.slider._x = 68+(ns.time/total_length)*(300-10); } else { seek_p = (v_tools.slider._x-68)/(300-10); ns.seek(seek_p*total_length); } v_tools.buffer_bg._width = ((ns.bytesLoaded/ns.bytesTotal)*100)*3; v_tools.slider_time._width = v_tools.slider._x-v_tools.slider_time._x; v_tools.curr_time.text = getFText(ns.time)+" / "+getFText(total_length); }; function getFText(b) { if (b) { txt = ""; minutes = Math.floor(b/60); if (minutes<10) { txt += "0"; } txt += minutes+":"; if (b%60<10) { txt += "0"; } txt += Math.floor(b%60); } else { txt = ""; txt = "00:00" } return (txt); } v_tools.pplay_btn.onPress = function() { pplay(); }; v_tools.stop_btn.onPress = function() { stopp(); }; function stopp(){ ns.seek(0); ns.pause(); } function pplay() { if (v_tools.pplay_btn._currentframe == 1) { if (ns.time>=total_length) { ns.seek(0); ns.pause(); } else { v_tools.pplay_btn.gotoAndStop(2); } } else if (v_tools.pplay_btn._currentframe == 2) { v_tools.pplay_btn.gotoAndStop(1); } ns.pause(); } v_tools.seeko.onPress = function() { ns.seek(((_xmouse-68)/v_tools.seeko._width)*total_length); }; v_tools.slider.onPress = function() { t_slide = true; v_tools.slider.startDrag(true,68,v_tools.slider._y,v_tools.seeko._width,v_tools.slider._y); ns.pause(true); v_tools.pplay_btn.gotoAndStop(2); }; v_tools.slider.onRelease = v_tools.slider.onReleaseOutside=function () { t_slide = false; v_tools.slider.stopDrag(); seek_p = (v_tools.slider._x-68)/(v_tools.seeko._width); ns.pause(false); v_tools.pplay_btn.gotoAndStop(1); ns.seek(seek_p*total_length); }; v_tools.volumecontrol.onPress = function() { v_tools.volumecontrol.volumeslider.startDrag(true,-25,0,30,0); }; v_tools.volumecontrol.onRelease = v_tools.volumecontrol.onReleaseOutside=function () { v_tools.volumecontrol.volumeslider.stopDrag(); setVolume(); }; function setVolume() { nv = Math.max(0, Math.min(100, v_tools.volumecontrol.volumeslider._x*4)); Audio_holder.setVolume(nv); }
//J'ai l'impression de jetter une bouteille à la mer !!
|
|
Cette discussion est classée dans : function, var, tween, tools, itm
Répondre à ce message
Sujets en rapport avec ce message
help grattflash [ par dogimo ]
alors voilà mon prob, ce script est superbe et je le trouve plus sympa que les petits carrés qui partent en fadeout généralement.donc voilà mon prob :
aide pour modifier un script [ par topalof3 ]
salut,j'aurais bien besoin de quelqu'un pour m'aider s'il vous plait:je colle puis j'explique: function detectVersion(){version = parseInt(navigator.a
pb MovieClipLoader [ par jotrash ]
bonjour a tous et merci de lire ma question: alors voila j'utilise dans mon flash le composant loadmovie de cette maniere : function clickMe(id) { v
comment creer une barre de volume son? [ par burritoboy ]
Salut!alors voila, je suis flasheur ultra débutant. Du coup, j'ai acheté le bouquin vendu par macromedia, et j'ai scripté un lecteur mp3 qui charge sa
easing scroll et Tween? [ par Straw ]
Bonjour a tous, J'aurais donc besoin d'une petite aide... Je cherche à faire un scroll fluide sur un texte dynamique (xml) comme on peut le voir ici :
Chargements multiples avec Loadsound [ par Selio001 ]
Bonjour à tous,Je me penche depuis quelques temps sur flash pour la création d'un site et je me retrouve face à un problème de chargement du son.Voil
gallerie image [ par moveslang ]
Bonjour tout le monde, un petit problème avec un tuto que j'ai choppé je ne sais plus où. il s'agit de réaliser une gallerie photo. j'essaie de modifi
problemes de codes AS2 [ par alexgr ]
J'ai acheté un site mais il a qque petit problemes: voici le code complet et tout en dessous se trouve les messages d'erreurs, comme l'aide est en ang
repositionné movieclip [ par nicodogs ]
Bonjour à tous,Il y a quelques jours Girou m'avais donné un bon coup de main pour mon animation style "caroussel", l'anim marche très bien. Mais j'ai
Redimensionner un aperçu uploadé ? [ par MissAnnThrope ]
Bonjour,Je souhaite créer une animation flash qui permette aux visiteurs d'uploader une photo/image pour ensuite y ajouter quelques petites choses (ca
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|