begin process at 2010 02 09 21:39:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

LocalConnect pas très bien compris


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

LocalConnect pas très bien compris

vendredi 25 mai 2007 à 00:15:51 | LocalConnect pas très bien compris

way2web

Bonsoir,

J'ai créé deux fichiers swf différents insérés dans la même page html :

1) le premier est une galerie de miniatures

2) le deuxième est les photos en grandeur nature

Je voudrais faire en sorte que lorsque l'on clique sur la miniature la photo correspondante grandeur nature s'affiche dans l'autre swf.

Pour ce faire on m'a parlé de la classe Local Connect, j'ai un peu feuilleté la documentation actionscript mais j'ai pas très bien compris comment ça marche, je sais que je dois créer un object comme celà :

[code]var monLocalConnect:LocalConnection = new LocalConnection();
monLocalConnect.connect("print_portfolio");[/code]
print_portfolio étant le nom de mon premier swf


mon code as est le suivant dans mon premier swf :

[code]var PhotoXML:XML = new XML();
//création d'un nouvel objet XML
var PhotoNumber:Number;
var TotalPhotos:Number;
var RootNode:XMLNode;
var index:Number = 0;
var nombre:Number = 0;
loadPhotoXML("print_portfolio_thumb.xml");
//pr que la fonction ne renvoye rien
function loadPhotoXML(filename:String):Void {
    PhotoXML.ignoreWhite = true;
    //sinon tous les return sont pris en considération
    PhotoXML.load(filename);
    //chargement du XML
    PhotoXML.onLoad = function(success:Boolean):Void  {
        if (success) {
            PhotoNumber = 0;
            //initialisation du nombre de photos
            RootNode = this.firstChild;
            //pour faciliter la navigation dans les noeuds XML
            TotalPhotos = RootNode.firstChild.childNodes.length;
            //nbre de balises <image> enfant d' <album> dans mon XML
            showThumbails(0,"2007");
            // fonction à créer pr faire apparaître la 1ère photo
        } else {
            trace("Problème de chargement du XML !");
        }
    };
}

function showThumbails(index,year:String):Void {
    _root.theyear = year;
    var MovieDepthCounter:Number = 10;
    var photoHolder:MovieClip;
    var xPos:Number;
    var yPos:Number = 20;
    var photoThumb:String;
    var indice:Number = 0;
    nombre+= index;
    indice = nombre/4;
    
    trace("nombre vaut "+nombre);    
    trace("index vaut "+index);
    trace("indice vaut "+indice);
    
    for (var i:Number = 0; i<RootNode.childNodes.length; i++)
    {
        
        if (RootNode.childNodes[i].attributes.year == year)
        {
            var CategoryXML:XMLNode = RootNode.childNodes[i];
            TotalPhotos = CategoryXML.childNodes.length;
            trace(year+" has "+TotalPhotos+" photos");
            
                if (indice == (Math.floor(TotalPhotos/4)) || year == "2003")
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                    
                    Next_btn.enabled = false;
                                    
                                        
                }
                
                else
                {
                    Next_btn.enabled = true;
                }
                
                if (nombre == 0)
                {
                    //pr empêcher d'aller en arrière qd on est à la première photo
                    Previous_btn.enabled = false;
                    Next_btn.enabled = true;
                }
                else
                {
                    Previous_btn.enabled = true;
                }
            
            
    
            for (var j:Number = 0; j<4; j++) {
                photoThumb = CategoryXML.childNodes[j+nombre].childNodes[1].firstChild.nodeValue;
                
                //trace(photoThumb);
                photoHolder = this.createEmptyMovieClip("photoHolder"+j, MovieDepthCounter);
                //trace(photoHolder);
                xPos = 30+65*j;
                photoHolder._x = xPos;
                photoHolder._y = yPos;
                var photoHolderLoader:MovieClipLoader = new MovieClipLoader();
                photoHolderLoader.loadClip(photoThumb, photoHolder);
                MovieDepthCounter++;
            }
        }
    }
    //fin du for
}
//fin de la fonction showThumbails[/code]


je souhaiterais donc envoyer la variable photoThumb qui va me permettre de répérer dans le fichier swf destinataire le noeud xml correspondant et donc en conséquence afficher la photo grandeur nature correspondante du noeud xml.

Je ne vois pas où insérer le code pour envoyer la variable et je ne comprends pas très les paramètres de send...

Merci d'avance pour votre aider !
vendredi 25 mai 2007 à 11:01:25 | Re : LocalConnect pas très bien compris

mdc888fr

Bonjour,

Quel est l'intérêt d'avoir 2 swf dans du html ? En l'occurence tu peux soit tout avoir dans un seul swf, ou loader un swf dans le premier swf. Dans les deux cas ce sera plus simple ! (enfin à mon avis hein).
vendredi 25 mai 2007 à 13:47:41 | Re : LocalConnect pas très bien compris

way2web

Je vous explique : en fait  c'est à cause de la disposition de ma page web, j'ai voulu mettre les miniatures à gauche du menu et la photo grandeur nature à droite, le flash s'intègre de manière transparente dans le html mais si j'avais fait qu'un seul swf, les boutons html de mon menu auraient été recouverts par le flash et donc seraient inaccessibles.

Regardez ma page et vous comprendrez mieux mes raisons : ma page

A moins que vous ayez une autre idée pour réaliser ce projet ? J'ai bien pensé placer mon menu dans un div au z-index supérieur à celui du div contenant le swf mais je crains que de navigateur en navigateur cela pose problème ??
vendredi 25 mai 2007 à 13:54:01 | Re : LocalConnect pas très bien compris

mdc888fr

Dans tous les cas je maintient qu'il serait beaucoup plus simple pour vous de faire tout en flash... Pourquoi avoir des boutons au milieu en javascript (il me semble), qui seraient plus faciles à réaliser en flash ? D'autant plus qu'il n'y aura aucun problème d'un navigateur à l'autre... Alors que la vous risquez d'avoir des problèmes de décalage, etc...
En fait nous sommes en quelque sorte concurrents, car nous réalisons la même chose... De mon côté, je vous assure que pour les sites que je réalise dans cet esprit, la totalité en flash est beaucoup mieux et flexible...
vendredi 25 mai 2007 à 14:03:12 | Re : LocalConnect pas très bien compris

bali_balo

Voir ma source :

http://www.flashkod.com/codes/CLASSE-LOCALCONNECTION-EXEMPLE-UTILISATION-AVEC-JEU-GRATTAGE_35707.aspx


bali_balo....=]
vendredi 25 mai 2007 à 17:05:31 | Re : LocalConnect pas très bien compris

way2web

Merci bali_balo, je vais essayer tout ça !

mdc888fr tu as peut-être raison mais on avait reçu comme consigne de ne pas réaliser tout en flash, en fait c'est un site de fin d'études pour une formation de webmaster et j'avais des contraintes telles que incorporer des éléments flashs ponctuels, coder en xhtml et en css etc.....
samedi 26 mai 2007 à 10:11:35 | Re : LocalConnect pas très bien compris

way2web

Rebonjour ;-),

j'ai testé le localconnect, avec un bouton pas de problème, mais le hic ici c'est que dans mon cas, le movieclip est créé dynamiquement et qu'apparement lui appliquer une fonction sur un onRelease n'a pas l'air de fonctionner (je ne parviens pas à cliquer sur mes miniatures !) .

Quel événement dois-je associer à mon movieClip photoHolder pour que je puisse cliquer dessus et voir le trace attestant que la variable photoThumb est bien envoyée ???

Merci d'avance

Mon code :

[code]
function showThumbails(index,year:String):Void {
    _root.theyear = year;
    var MovieDepthCounter:Number = 10;
    var photoHolder:MovieClip;
    var xPos:Number;
    var yPos:Number = 20;
    var photoThumb:String;
    var indice:Number = 0;
    nombre+= index;
    indice = nombre/4;
    
    trace("nombre vaut "+nombre);    
    trace("index vaut "+index);
    trace("indice vaut "+indice);
    
    for (var i:Number = 0; i<RootNode.childNodes.length; i++)
    {
        
        if (RootNode.childNodes[i].attributes.year == year)
        {
            var CategoryXML:XMLNode = RootNode.childNodes[i];
            TotalPhotos = CategoryXML.childNodes.length;
            trace(year+" has "+TotalPhotos+" photos");
            
                if (indice == (Math.floor(TotalPhotos/4)) || year == "2003" )
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                    
                    Next_btn.enabled = false;
                                    
                                        
                }
                
                if ((nombre+1) > (TotalPhotos-4) )
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                    
                    Next_btn.enabled = false;
                                    
                                        
                }
                
                else
                {
                    Next_btn.enabled = true;
                }
                
                if (nombre == 0)
                {
                    //pr empêcher d'aller en arrière qd on est à la première photo
                    Previous_btn.enabled = false;
                    Next_btn.enabled = true;
                }
                else
                {
                    Previous_btn.enabled = true;
                }
            
            
    
            for (var j:Number = 0; j<4; j++) {
                photoThumb = CategoryXML.childNodes[j+nombre].childNodes[1].firstChild.nodeValue;
                //photoThumb = "http://www.webdesign-4u.be/web-4u/images/portfolio/pictures/2003/botybenelux.jpg";
                //trace(photoThumb);
                photoHolder = this.createEmptyMovieClip("photoHolder"+j, MovieDepthCounter);
                //trace(photoHolder);
                xPos = 30+65*j;
                photoHolder._x = xPos;
                photoHolder._y = yPos;
                var photoHolderLoader:MovieClipLoader = new MovieClipLoader();
                photoHolderLoader.loadClip(photoThumb, photoHolder);
                
                photoHolder.onRelease = function() {
               Envoi = new LocalConnection();
               Envoi.send("print_portfolio_thumb2", "mamethode", photoThumb);
               delete Envoi;
               trace ("Je suis le sender et voici photoThumb :"+photoThumb);
            };
                MovieDepthCounter++;
            }
        }
    }
    //fin du for
}
//fin de la fonction showThumbails


[/code]
dimanche 27 mai 2007 à 02:40:58 | Re : LocalConnect pas très bien compris

way2web

Re -bonjour  :wink: ,

le localconnect marche mais la variable photoThumb envoyée est tjs la même la dernière (la dernière de la boucle), comment faire pour qu'au clic sur la miniature c'est la valeur photoThumb correspondante qui soit envoyée?

[code]
function showThumbails(index,year:String):Void {
    _root.theyear = year;
    var MovieDepthCounter:Number = 10;
    var photoHolder:MovieClip;
    var xPos:Number;
    var yPos:Number = 20;
    var photoThumb:String;
    var indice:Number = 0;
    nombre+= index;
    indice = nombre/4;
    
    trace("nombre vaut "+nombre);    
    trace("index vaut "+index);
    trace("indice vaut "+indice);
    
    for (var i:Number = 0; i<RootNode.childNodes.length; i++)
    {
        
        if (RootNode.childNodes[i].attributes.year == year)
        {
            var CategoryXML:XMLNode = RootNode.childNodes[i];
            TotalPhotos = RootNode.childNodes[i].childNodes.length;
            trace(year+" has "+TotalPhotos+" photos");
            
                if (indice == (Math.floor(TotalPhotos/4)) || year == "2003" )
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                    
                    Next_btn.enabled = false;                            
                                        
                }
                
                if ((nombre+1) > (TotalPhotos-4) )
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                    
                    Next_btn.enabled = false;                                
                                        
                }
                
                else
                {
                    Next_btn.enabled = true;
                }
                
                if (nombre == 0)
                {
                    //pr empêcher d'aller en arrière qd on est à la première photo
                    Previous_btn.enabled = false;
                    Next_btn.enabled = true;
                }
                else
                {
                    Previous_btn.enabled = true;
                }
            
            
    
            for (var j:Number = 0; j<4; j++)
            {
                photoThumb = RootNode.childNodes[i].childNodes[j+nombre].childNodes[1].firstChild.nodeValue;
                
                trace(photoThumb);
                photoHolder = this.createEmptyMovieClip("photoHolder"+j, MovieDepthCounter);
                //trace(photoHolder);
                xPos = 30+65*j;
                photoHolder._x = xPos;
                photoHolder._y = yPos;
                
                var photoHolderLoader:MovieClipLoader = new MovieClipLoader();
                
                // création de l'écouteur
                var eLoader:Object = new Object();
                eLoader.onLoadInit = function(photoHolder:MovieClip):Void  
                {
                    // p_mcCible correspond à photoHolder
                    
                    photoHolder._alpha = 0;
                    photoHolder.onLoad = doFade(photoHolder, "in", 5);
                    photoHolder.onRelease = function()
                    {
                       Envoi = new LocalConnection();
                       Envoi.send("portfolio_thumb_fade", "mamethode", photoThumb);
                       trace ("photoThumb envoyé correspond à : "+photoThumb);                                     
                    }
                };
                photoHolderLoader.addListener(eLoader);
                
                photoHolderLoader.loadClip(photoThumb, photoHolder);
                
                MovieDepthCounter++;
            }
        }
    }
    //fin du for
    
}
//fin de la fonction showThumbails[/code]

Merci d'avance
dimanche 27 mai 2007 à 15:13:49 | Re : LocalConnect pas très bien compris

way2web

Bonjour,

Pour pouvoir m'y retrouver dans mon swf recepteur, j'ai créé une variable myphoto qui représente l'addition de photoHolder (qui va de 0 à 3) puisque c'est par 4 que j'ai paramétré la galerie miniature et de la variable nombre qui va me permettre finalement d'envoyer un nombre allant de 0 à TotalPhotos contenus dans cette année, le problème c'est que l'envoi de la variable se fait mais elle ne retient que la dernière valeur de la boucle j<4 alors que moi j'ai besoin que lorsqu'on clique ça m'envoie la valeur correspondante !!

j'aimerais aussi envoyer une deuxième variable à l'autre swf, (la variable year qui va me permettre de savoir dans quel noeud le swf recepteur devra chercher pour afficher photo grandeur max), puis je simplement la rajouter après la première variable avec une virgule ???


Merci d'avance !

[CODE]
function showThumbails(index,year:String):Void {
    _root.theyear = year;
    var MovieDepthCounter:Number = 10;
    var photoHolder:MovieClip;
    var xPos:Number;
    var yPos:Number = 20;
    var photoThumb:String;
    var indice:Number = 0;
    nombre+= index;
    indice = nombre/4;
   
    trace("nombre vaut "+nombre);   
    trace("index vaut "+index);
    trace("indice vaut "+indice);
   
    for (var i:Number = 0; i<RootNode.childNodes.length; i++)
    {
       
        if (RootNode.childNodes[i].attributes.year == year)
        {
            var CategoryXML:XMLNode = RootNode.childNodes[i];
            TotalPhotos = RootNode.childNodes[i].childNodes.length;
            trace(year+" has "+TotalPhotos+" photos");
           
                if (indice == (Math.floor(TotalPhotos/4)) || year == "2003" )
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                   
                    Next_btn.enabled = false;                           
                                       
                }
               
                if ((nombre+1) > (TotalPhotos-4) )
                {
                    //pr empêcher d'aller en avant qd on est à la dernière photo
                   
                    Next_btn.enabled = false;                               
                                       
                }
               
                else
                {
                    Next_btn.enabled = true;
                }
               
                if (nombre == 0)
                {
                    //pr empêcher d'aller en arrière qd on est à la première photo
                    Previous_btn.enabled = false;
                    Next_btn.enabled = true;
                }
                else
                {
                    Previous_btn.enabled = true;
                }
           
           
   
            for (var j:Number = 0; j<4; j++)
            {
                photoThumb = RootNode.childNodes[i].childNodes[j+nombre].childNodes[1].firstChild.nodeValue;
               
                trace(photoThumb);
                trace("nombre vaut : "+nombre);
                photoHolder = this.createEmptyMovieClip("photoHolder"+j, MovieDepthCounter);
                //trace(photoHolder);
                xPos = 30+65*j;
                photoHolder._x = xPos;
                photoHolder._y = yPos;
               
                var photoHolderLoader:MovieClipLoader = new MovieClipLoader();
                trace ("photoHolder vaut :"+photoHolder);
                var recup:String = photoHolder._name.slice(-1); //pr extraire le numéro de la photo (de 0 à3)
                var recupNumber:Number = parseInt(recup); //pr convertir string en number
                var myphoto:Number = recupNumber + nombre; //pr pouvoir envoyer à l'autre swf le numéro de la photo correspondante
                trace ("myphoto vaut : " +myphoto);
                // création de l'écouteur
                var eLoader:Object = new Object();
                eLoader.onLoadInit = function(photoHolder:MovieClip):Void 
                {
                    // p_mcCible correspond à photoHolder
                   
                    photoHolder._alpha = 0;
                    photoHolder.onLoad = doFade(photoHolder, "in", 5);
                    photoHolder.onRelease = function()
                    {
                       Envoi = new LocalConnection();
                       Envoi.send("portfolio_thumb_fade", "mamethode", myphoto);
                       trace("photoThumb envoyé correspond à : "+myphoto);
                       trace ("year correspond à "+year);
                    }
                };
                photoHolderLoader.addListener(eLoader);
               
                photoHolderLoader.loadClip(photoThumb, photoHolder);
               
                MovieDepthCounter++;
            }
        }
    }
    //fin du for
   
}
//fin de la fonction showThumbails
function doFade(mcName, alphaDirection, changeRate) {
    mcName.onEnterFrame = function() {
        if (alphaDirection == "out") {
            if (this._alpha<=0) {
                this._alpha = 0;
                delete this.onEnterFrame;
            } else {
                this._alpha -= changeRate;
            }
        } else if (alphaDirection == "in") {
            if (this._alpha>=100) {
                this._alpha = 100;
                delete this.onEnterFrame;
            } else {
                this._alpha += changeRate;
            }
        }
    };
}


[/CODE]


Cette discussion est classée dans : nombre, var, xml, number, trace


Répondre à ce message

Sujets en rapport avec ce message

tableau deux dimentions [ par georgeconst ] salut a tous C'est la premiere fois que je participe a un forum alors si qqch cloche n'esitez pas a me le faire remarquer..j'ai un probleme avec actio Problème d'undefined [ par Reno007 ] Bonjour à tous. Je désire pouvoir avoir accès au contenu de ma variable "contenuXMLFichier" en dehors de la fonction onLoad et j avais trouvé un cod Problème de onPress dans une boucle [ par Reno007 ] Bonjour à tous et toutes,Je débute en flash et j'ai un problème pour ma galerie de photos. J'affiche une photo et les miniatures.Le problème c'est que Conversion en nombre.. ? [ par Lyche ] Bonjour.Je suis devant un problème un peu stupide, mais je ne trouve pas la solution, ni sur l'aide, ni sur les sites.J'ai vu la fonction : "Number(pa Appliquer simultanément deux filtres en as [ par way2web ] Bonjour,j'ai créé un movieclip de manière dynamique sur lequel j'ai placé un listener, ensuite au onLoadInit, j'ai appliqué un filtre dropshadow et ma Problème de logique mathématique dans mon script [ par way2web ] Bonjour,Moi et les maths on fait 2 ;) Ca fait quelques heures que je galère sur ce script, je vous explique :j'ai une galerie photo miniatures avec un width sur une variable xml récupérée ne fonctionne pas [ par cd59 ] Bonjour, j'ai un SWF avec des champs de texte. Ces champs sont renseigné dans un xml.Ce qui marche : l'import dans flash des noms des champs de texte Ajouter du reflet sur un objet plane style carrousel [ par Alex001 ] Bonjour à tous, Je code actuellement un site en flash AS3. Avec l'aide de plusieurs sources j'ai fini par créer des planes qui charges des images a p Carrousel 3D [ par cash1 ] Bonjour à tous,Voilà, après avoir chercher un peu partout sur la toile je n'arrive pas à trouver ce qui me convient.J'ai réalisé un carrousel "3D" en Arrêt du carrousel ou arrêt de fonction [ par cash1 ] Bonjour à tous,Voilà mon problème, j'ai trouvé le code source pour crée un carrousel effet 3D. Il fonctionne très bien mes images sont bien chargées,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,858 sec (4)

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