Ariranha
Messages postés79Date d'inscriptionmercredi 1 août 2007StatutMembreDernière intervention27 juillet 2011
-
24 oct. 2009 à 20:40
Ariranha
Messages postés79Date d'inscriptionmercredi 1 août 2007StatutMembreDernière intervention27 juillet 2011
-
24 oct. 2009 à 23:04
Bonsoir
Je suis sur un menu dynamique xml avec : menu (bien entendu), sousMenu et sousSousMenu (et oui le client n'a pas étudié son arborescence et veut en montrer de trop mais rien a faire pour le convaincre du contraire).
Or j'ai un petit soucis avec les tweens, que je souhaiterai placer sur l'apparition du sousMenu et du sousSousMenu. Je vous montre le code ci-dessous :
import com.greensock.*;
import com.greensock.easing.*;
generationMenu = function (container, name, x, y, depth, noeudXml) {
var noeudCourant;
var itemCourant;
var menuCourant = container.createEmptyMovieClip(name, depth);
for (var i = 0; i<noeudXml.childNodes.length; i++) {
itemCourant = menuCourant.attachMovie("menuitem", "item"+i+"_mc", i);
itemCourant._x = x+i*itemCourant._width;
itemCourant._y = y;
itemCourant.trackAsMenu = true;
noeudCourant = noeudXml.childNodes[i];
itemCourant.chemin = noeudCourant.attributes.chemin;
itemCourant.name.text = noeudCourant.attributes.name;
itemCourant.legende = noeudCourant.attributes.legende;
if (noeudXml.childNodes[i].nodeName == "menu") {
itemCourant.noeudXml = noeudCourant;
itemCourant.onPress = function() {
var x = 10;
var y = this._y+25;
generationMenu(menuCourant,"sousMenu",x,y,1000,this.noeudXml);
};
} else {
itemCourant.arrow._visible = false;
itemCourant.onPress = function() {
menuCourant.sousMenu.removeMovieClip();
};
}
itemCourant.onRelease = function() {
if (this.legende == null) {
legende.text = "";
} else {
loadMovie(this.chemin, box);
legende.text = this.legende;
MovieClipLoader
}
};
}
};
creationMenuPrincipal = function (x, y, depth, menu_xml) {
generationMenu(this,"menuPrincipal",x,y,depth,menu_xml.firstChild);
menuPrincipal.onMouseUp = function() {
if (menuPrincipal.sousMenu && !menuPrincipal.hitTest(_root._xmouse, _root._ymouse, true)) {
}
};
};
menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(sucess) {
if (sucess) {
creationMenuPrincipal(10,10,0,this);
legende.text = "zone legende";
} else {
legende.text = "erreur: impossible d'acceder au xml";
}
};
menu_xml.load("menu.xml");
Donc en gros il faudrait que je puisse mettre une tween dans les lignes ci-dessous, mais je ne vois pas comment m'y prendre : créer une variable qui engloberait l'ensemble du sousMenu ou du sousSousMenu et par la suite appliquer la tween a cette variable ?
if (noeudXml.childNodes[i].nodeName == "menu") {
itemCourant.noeudXml = noeudCourant;
itemCourant.onPress = function() {
var x = 10;
var y = this._y+25;
generationMenu(menuCourant,"sousMenu",x,y,1000,this.noeudXml);
};
Ariranha
Messages postés79Date d'inscriptionmercredi 1 août 2007StatutMembreDernière intervention27 juillet 2011 24 oct. 2009 à 23:04
Je suis désolé de re-poster encore mais ça y est j'ai enfin réussi à obtenir l'effet désiré par le client, pour le code il s'agissait seulement d'un problème de placement des "lignes". Donc voici le code :
if (noeudXml.childNodes[i].nodeName == "menu") {
itemCourant.noeudXml = noeudCourant;
container.sousMenu._alpha = 0;
TweenLite.to(container.sousMenu, 1, {_x:-90, _alpha:100});
itemCourant.onPress = function() {
var x = 100;
var y = this._y+25;
generationMenu(menuCourant,"sousMenu",x,y,1000,this.noeudXml);
container.sousMenu.sousMenu._x = 100;
container.sousMenu.sousMenu._alpha = 0;
TweenLite.to(container.sousMenu.sousMenu, 1, {_x:0, _alpha:100});
};
Ariranha
Messages postés79Date d'inscriptionmercredi 1 août 2007StatutMembreDernière intervention27 juillet 2011 24 oct. 2009 à 22:59
Apres quelques modifications, j'ai bien avancé mais il y a un truc qui m'échappe. Voici la partie du code modifiée :
if (noeudXml.childNodes[i].nodeName == "menu") {
itemCourant.noeudXml = noeudCourant;
container.sousMenu._alpha = 0;
TweenLite.to(container.sousMenu, 1, {_x:-90, _alpha:100});
TweenLite.to(container.sousMenu.sousMenu, 1, {_x:-90, _alpha:100});
itemCourant.onPress = function() {
var x = 100;
var y = this._y+25;
generationMenu(menuCourant,"sousMenu",x,y,1000,this.noeudXml);
};
J'ai toujours un problème avec container.sousMenu.sousMenu qui au lieu de partir de 100 et de parcourir -90 sur le _x comme container.sousMenu, il part de 0 et va a -90.