Problème avec mon menu !

figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010 - 22 avril 2010 à 15:59
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011 - 27 avril 2010 à 14:55
Bonjour,

J'ai un petit souci avec mon menu (xml). 1 clic sur une rubrique (5 rubriques au total) est sensé faire défiler mon bandeau (ou slider). En temps normal, lorsque les boutons sont affichés sur la scène, on attribue une valeur à chaque bouton :

Bouton 1 on (release) {
menu.targetx = 0.0;
}

Bouton 2 on (release) {
menu.targetx = 46.0;
}

et ainsi de suite.

Or, dans le cas présent, je ne peux en aucun cas intervenir sur lesdits boutons puisque ces derniers apparaissent uniquement en mode "publication". Aussi, comment dois-je procéder au niveau du code ? Ceci vous semble-t-il correct ?

Code de départ, affichant une url dans une autre fenêtre :

myMovie[maskInstance].onRelease = function() {
getURL(myMovie["item"+i].url, "_blank");
};
}

Code modifié :

myMovie[maskInstance].onRelease = function() {
getURL(myMovie["item"+i].menu1, "targetx = 46.0");
};
}

En XML, j'ai :

<menu>

<content><![CDATA[PAYSAGES IMAGINAIRES]]></content>


En fait, je ne souhaite pas qu'il y ait une url... puisque le but étant de faire défiler le bandeau de gauche à droite et inversement et non d'ouvrir une URL dans une fenêtre...

Avez-vous une idée ?

Merci de votre aide si précieuse !

15 réponses

dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
22 avril 2010 à 17:36
Salut,

Si tu veux supprimer la fonctionnalité de naviguer à travers une url, tu peux carrément supprimer cette ligne :
getURL(myMovie["item"+i].menu1, "targetx = 46.0"); 


Par contre pour t'aider, ça ne va pas être suffisant, comment sont créés les boutons de sous-menu ? (myMovie[maskInstance])
Qu'est ce que menu.targetx ?
0
figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010
22 avril 2010 à 18:17
Merci de ta réponse...
Dans un premier temps, j'ai supprimé dans le fichier XML cette ligne :

url="http://www.flashcomponents.net">


Le code initial dans flash est le suivant :
myMovie[maskInstance].onRelease = function() { 
getURL(myMovie["item"+i].url, "_blank"); 
}; 
} 


qui renvoit à la ligne xml url="http://www.... voir ci-dessous...

<?xml version="1.0"?>
<menu>

<content><![CDATA[PAYSAGES IMAGINAIRES]]></content>


<content><![CDATA[LES Z'AMIS Z'ANIMAUX]]></content>


<content><![CDATA[MISE EN BOUCHE]]></content>


<content><![CDATA[TRAITS URBAINS]]></content>


<content><![CDATA[CROQUEZ LA VIE]]></content>


<content><![CDATA[VERT 2 Z'ECO]]></content>


</menu>



Or, je souhaite appliquer aux boutons une action : faire défiler le bandeau... Chaque bouton correpond à un rectangle (il y en a 5 et qui forment ledit bandeau)...

Voici la page du menu en question :

Easy Tweener Menu

J'ignore ce que je dois mettre dans flash...

Je ne peux pas balancer le .fla malheureusement.

Merci !!
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
23 avril 2010 à 15:46
Ok je comprend déjà un peu mieux ce que tu veux faire..

Bah pourquoi pas appeler une fonction scrollBandeau(value) au clique sur un bouton ?

Bouton 1 on (release) {
   scrollBandeau(0.0);
}
Bouton 2 on (release) {
   scrollBandeau(46.0);
}

function scrollBandeau(value) {
   Tween(bandeau_mc, "_x", Ease.in, bandeau_mc._x, value, 1);
}


Bon, tes boutons sont crées dynamiquement comme tu dis. Bah dans la boucle où ils sont crées, il faut donc leur ajouter leur méthode bouton.onRelease tout simplement. Et pour le targetx, soit tu le définit directement avec le i de la boucle si tes carrés de ton bandeau sont des carrés de même taille (donc targetx = i * largeurCarre), on sinon tu les définis dans la balise xml du menu ( )

A voir donc en fct de ce que tu veux..
0
figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010
23 avril 2010 à 16:59
Merci...

Mon bandeau est constituté de rectangles de même taille. J'ai donc défini dans la balise xml comme suit .

Quant à la fonction .... j'ai bien bidouillé... mais franchement je ne vois pas très bien où ajouter la méthode onRelease... Voici le code... Pour info, j'ai laissé le code d'origine, mais je sais que je dois supprimer la dernière ligne de code myMovie[maskInstance].onRelease = function() {
getURL(myMovie["item"+i].url, "_blank");
};

import caurina.transitions.Tweener;

var xmlData  = "menu.xml";
var xmlObj:XML;
var textY = new Array();
var bkgColor = new Array();
var spacing = 1; //space between menu items
var bkgItemWidth = 17; //how much the item background to be scaled

//animation times
var timeBkg = 1;
var timeText1 = 2;
var timeText2 = 0.5;

//end animation times

//liniar, easeOutElastic, easeOutBounce, easeOutBack, easeOutCirc
// easeInElastic, easeInBounce, easeInBack, easeInCirc

var effTransitionBkg = "linear";
var effTransitionText = "linear";
var numItems;
var xa;
var myMovie = this;
var objects;


init();//init call

function init() {
xmlObj = new XML(xmlData);
xmlObj.ignoreWhite = true;
xmlObj.load(xmlData);
this.onEnterFrame = checkXMLprogress;
}

function checkXMLprogress() {
var tmpBytesLoaded = xmlObj.getBytesLoaded();
var tmpBytesTotal = xmlObj.getBytesTotal();
if ((tmpBytesLoaded == tmpBytesTotal) && (tmpBytesTotal>4)) {
delete this.onEnterFrame;
addMenuItems();
}
//end if    
}

function addMenuItems() {

objects = xmlObj.firstChild.childNodes;
numItems = objects.length;

for (var i = 0; i<numItems; i++) {
startItems(i);
}

}

function startItems(i) {

var menuitem = "item"+i;
var maskInstance = "mask"+i;
var textInstance = "text"+i;
myMovie.attachMovie("menuitem",menuitem,this.getNextHighestDepth());
myMovie.attachMovie("mask",maskInstance,this.getNextHighestDepth());
myMovie.attachMovie("textMc",textInstance,this.getNextHighestDepth());

myMovie[textInstance].tf.htmlText =  objects[i].childNodes[0].firstChild.nodeValue;
myMovie[textInstance]._alpha = 0;

if (i>0) {
myMovie[menuitem]._y = i*(myMovie[menuitem]._height+spacing);
myMovie[maskInstance]._y = i*(myMovie[maskInstance]._height+spacing);
myMovie[textInstance]._y = i*(myMovie[maskInstance]._height+spacing);
}

myMovie[menuitem].url = objects[i].attributes.url;

myMovie[textInstance].tf.autoSize = true;

var my_color:Color = new Color(myMovie[menuitem].itemBkg);
my_color.setRGB(objects[i].attributes.bkg);

xStart = myMovie[menuitem]._xscale;

myMovie[maskInstance].onRollOver = function() {

var initX = xStart*bkgItemWidth;
Tweener.addTween(myMovie["item"+i],{_xscale:initX,time:timeBkg,transition:effTransitionBkg});

this._xscale = initX;
var xTextFinish = this._width - myMovie["text"+i].tf._width - 5;
Tweener.addTween(myMovie["text"+i],{_x:xTextFinish,time:timeText1,transition:effTransitionText});
Tweener.addTween(myMovie["text"+i],{_alpha:100,time:timeText1,transition:effTransitionText});

};
myMovie[maskInstance].onRollOut = function() {

Tweener.addTween(myMovie["item"+i],{_xscale:xStart,time:1,transition:effTransitionBkg});
var xTextFinish2 = this._x;
Tweener.addTween(myMovie["text"+i],{_x:xTextFinish2,time:timeText2,transition:effTransitionText});
Tweener.addTween(myMovie["text"+i],{_alpha:0,time:timeText2,transition:effTransitionText});

this._xscale = xStart;

};
myMovie[maskInstance].onRelease = function() {
getURL(myMovie["item"+i].url, "_blank");
};
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
26 avril 2010 à 10:40
Hé ben c'est là, dans tes dernières lignes de code :

myMovie[maskInstance].onRelease = function() {
getURL(myMovie["item"+i].url, "_blank");
                scrollBandeau(46.0);
};


C'est dans cette fonction qu'on décrit le comportement lors du clic sur le bouton.
0
figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010
26 avril 2010 à 11:13
Eh ben... ça ne marche pas !! une nouvelle fenêtre s'affiche !!!!

Dans le fichier xml, au lieu de la ligne :



j'ai tapé <... targetx="46.0"> et ainsi de suite (pour chaque bouton).

Le problème est que j'ai 5 boutons :

Le premier bouton : targetx=46.0;
Le deuxième bouton : = -324.6;
Le troisième bouton : -696.7;
et ainsi de suite....

et j'ai un menu dynamique...

Pas évident, non ?!
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
26 avril 2010 à 17:24
une nouvelle fenêtre s'affiche !!!!

Quelle fenêtre? tu parle du panel "sortie" ? si c'est ça faudrait coller ce qui est écrit dedans car c'est du débogage!!

Tu peux tester ça, et voir ce qu'il t'affiche, si c'est "Null", ben c'est qu'il est dans les choux dès le début...
myMovie[maskInstance].onRelease = function() {
trace(this);
                scrollBandeau(46.0);
};
0
figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010
26 avril 2010 à 18:06
Je parlais de la fenêtre du navigateur...

Bon, j'ai essayé et tenté d'autres choses... rien ne se passe...
Franchement, j'en perds mon latin !!!
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
27 avril 2010 à 09:58
Une nouvelle fenêtre de ton navigateur s'ouvre car il y a le getURL.

Tu peux pas poster un fla en isolant juste le menu et le bandeau, on y verrait + clair. Parce que là on cherche un peu l'aiguille cachée dans une botte de foin.
0
figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010
27 avril 2010 à 10:12
J'avais songé à poster le fla, mais je fais comment, je ne vois aucun moyen pour uploader le fichier !! ou alors mes yeux...
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
27 avril 2010 à 10:38
Ben en fait tu peux le poster sur rapidshare par exemple, et poster le lien ici ! rapidshare, ou tout autre service de dépôt de partage de fichier.
0
figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010
27 avril 2010 à 11:02
Merci pour l'info !

Voici le lien (megaupload) : Menu.
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
27 avril 2010 à 11:57
Ok je comprend mieux là.

Voilà comment il faut le faire fonctionner :

A la place de cette ligne :
myMovie[menuitem].url= objects[i].attributes.url;


il faut remplacer par :
myMovie[menuitem].targetx = objects[i].attributes.targetx;

(on vient attribuer la propriété "targetx" et non plus "url". Bien sûr pour cela il faut que tu aies bien remplacé tous tes "url=..." par "targetx=..." dans ton fichier xml).

Et enfin pour la fonction du clic :
myMovie[maskInstance].onRelease = function() {
_parent.menu1.targetx = myMovie["item"+i].targetx;
};
(le slider est placé sur le _root et il s'appelle "menu1", donc on lui dit d'aller slider jusqu'à la nouvelle position X en lui redonnant sa nouvelle valeur targetx).

J'ai testé ça fonctionne pour moi.
0
figueline Messages postés 31 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 2 septembre 2010
27 avril 2010 à 14:07
Eh bien mazette !!! Un très très grand merci... tout fonctionne parfaitement... J'étais un petit peu frustrée de ne pas pouvoir y parvenir... Un bon chemin à parcourir avant de pouvoir maîtriser la bébête...

Excellente journée et encore merci !
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
27 avril 2010 à 14:55
Pas de quoi ! Il manquait vraiment pas grand chose.
bonne journée à toi aussi
0
Rejoignez-nous