begin process at 2012 05 27 22:55:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Divers

 > 

Général

 > 

Tree, xml, et Player vidéo...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales