begin process at 2012 05 27 19:34:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Base de données

 > 

XML

 > 

Problème d'affichage du background en Flash MX 2004


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

Problème d'affichage du background en Flash MX 2004

mercredi 6 mai 2009 à 11:44:59 | Problème d'affichage du background en Flash MX 2004

Aigle2

Bonjour à tous!

Je suis débutant en flash, et j'ai un petit problème que je ne comprends pas...

Voilà. Tout d'abord, j'utilise Flash MX 2004. Et j'aimerais créer un menu flash vertical avec des sous-menus de manière dynamique en partant d'un fichier xml. Je sais qu'il y a déjà plein de sources sur ce forum, mais pas ce que je recherche. (J'ai déjà tout regardé.) J'aimerais créer ce menu dynamique en me basant sur aucune image de départ, et créer ce menu dynamiquement par code.

Pour ce qui est de la création et du chargement du menu, ça y a pas de problème.

Pour ceux ou celles qui recherche la même chose que moi, voici le lien qui m'a aidé:
www.kirupa.com/developer/actionscript/xml_dropdown_menu.htm

Mon problème, est que quand le nom d'un item du menu dépasse le dixième caractères, ce nom rétréci de taille en se serrant, et le background lui, s'arrête sur le dixième caractère. Et le reste des caractères n'est pas coloré. En plus, il y a un encadré noir, que j'aimerais aussi retiré avec votre aide.

Et aussi, savez-vous comment je pourrais changer la police de caractère ainsi que la taille, car la méthode setFormat, ne fonctionne pas dans mon cas... Car il n'y a pas de champs texte.

En tout cas, un grand merci déjà d'avance à tous et à toutes pour votre aide! 
mercredi 6 mai 2009 à 12:21:06 | Re : Problème d'affichage du background en Flash MX 2004

Girou

Membre Club
Réponse acceptée !
Bonjour,

Si tu a parcouru le tutorial qui accompagne cette source tu devrais avoir trouvé la réponse à plusieurs questions comme l'encadré noir que tu veux retirer (editer le symbole contenant le fond, la fleche et le texte), la taille (pour afficher plus de 10 caractères) -> modifie le symbole sus-mentinné en conséquence.

changer la police -> sur le champs de texte toujours du même symbole faire 'intégrer la police de caractère' (options du champs de texte)

"Car il n'y a pas de champs texte."
Bien sur que si... sinon impossible d'afficher du texte dynamique

@+

signature not found
mercredi 6 mai 2009 à 12:40:46 | Re : Problème d'affichage du background en Flash MX 2004

Aigle2

Réponse acceptée !
Bonjour! Et merci pour ta réponse si rapide.

En fait, dans le fichier source qu'ils donnent, il n'y a pas de symbole créé...

Tout est fait par code.

Si tu veux, voici mon code...

*************************************************************************************

// generates a list of menu items (effectively one menu)
// given the inputted parameters.  This makes the main menu
// as well as any of the submenus
GenerateMenu = function(container, name, x, y, depth, node_xml)
{
    // variable declarations
    var curr_node;
    var curr_item;
    var curr_menu = container.createEmptyMovieClip(name, depth);
   
    // for all items or XML nodes (items and menus)
    // within this node_xml passed for this menu
    for (var i=0; i<node_xml.childNodes.length; i++)
    {
        // movieclip for each menu item
        curr_item = curr_menu.attachMovie("menuitem","item"+i+"_mc", i);
        curr_item._x = x;
        curr_item._y = y + i*curr_item._height;
        curr_item.trackAsMenu = true;
       
        // item properties assigned from XML
        curr_node = node_xml.childNodes[i];
        curr_item.action = curr_node.attributes.action;
        curr_item.variables = curr_node.attributes.variables;
        curr_item.name.text = curr_node.attributes.namemenu;
       
        // Alignement du texte des menus à gauche
        curr_item.name.autosize = "left";
    //    curr_item.name.wordWrap = false;
        // Largeur du menu
        curr_item._width = 130;
        // Hauteur du menu
    //    curr_item._height = curr_item._height;
        // Couleur du menu
        var ma_couleur = new Color(curr_item.background);
        ma_couleur.setRGB(0x92d74b);
        // Couleur du texte du menu
        curr_item.name.textcolor = 0x13571e;
    //    curr_item.name.background = false;
       
       
        // item submenu behavior for rollover event
        if (node_xml.childNodes[i].nodeName == "menu")
        {
            // open a submenu
            curr_item.node_xml = curr_node;
            curr_item.onRollOver = curr_item.onDragOver = function()
            {
                var x = this._x + this._width + 0.2;
                var y = this._y + 0;
                GenerateMenu(curr_menu, "submenu_mc", x, y, 1000, this.node_xml);
                // Changement de couleur du menu lors de la survol
                var col = new Color(this.background);
                col.setRGB(0xb45f27);
            };
        }
        else
        { // nodeName == "item"
            curr_item.arrow._visible = false;
            // close existing submenu
            curr_item.onRollOver = curr_item.onDragOver = function()
            {
                curr_menu.submenu_mc.removeMovieClip();
                // Changement de couleur du sous-menu lors de la survol
                var col = new Color(this.background);
                col.setRGB(0xb45f27);
            };
        }
       
        curr_item.onRollOut = curr_item.onDragOut = function()
        {
            // Restauration de la couleur de départ du menu
            var col = new Color(this.background);
            col.setRGB(0x92d74b);
        };
       
        // any item, menu opening or not can have actions
        curr_item.onRelease = function()
        {
            Actions[this.action](this.variables);
            CloseSubmenus();
        };
    } // end for loop
};

// create the main menu, this will be constantly visible
CreateMainMenu = function(x, y, depth, menu_xml)
{
    // generate a menu list
    GenerateMenu(this, "mainmenu_mc", x, y, depth, menu_xml.firstChild);
    // close only submenus if visible durring a mouseup
    // this main menu (mainmenu_mc) will remain
    mainmenu_mc.onMouseUp = function()
    {
        if (mainmenu_mc.submenu_mc && !mainmenu_mc.hitTest(_root._xmouse, _root._ymouse, true))
        {
            CloseSubmenus();
        }
    };
};

// closes all submenus by removing the submenu_mc
// in the main menu (if it exists)
CloseSubmenus = function()
{
    mainmenu_mc.submenu_mc.removeMovieClip();
};

// This actions object handles methods for actions
// defined by the XML called when a menu item is pressed
Actions = Object();
Actions.gotoURL = function(urlVar)
{
    getURL(urlVar, "_self");
};

// load XML, when done, run CreateMainMenu to interpret it
menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok)
{
    // create main menu after successful loading of XML
    if (ok)
    {
        CreateMainMenu(10, 10, 0, this);
    }
};
// load first XML menu
menu_xml.load("datas.xml");
*************************************************************************************

Je ne vois nulle part, où il y a une délimitation que pour l'encadrer noir...

Merci.
mercredi 6 mai 2009 à 13:08:46 | Re : Problème d'affichage du background en Flash MX 2004

Aigle2

Réponse acceptée !
Euh, ça va, je crois que j'ai trouvé...

En fait, tu m'as mis sur une piste. Je ne sais pas comment ça se fait, peut-être avec la compilation, mais quand je recopie le même code dans un nouveau document, avec le même fichier xml dans le même répertoire, celui ne fonctionne pas... Pour cause à mon avis, pas de symbole.

Pourtant, dans celui d'actuelle, il n'y a pas de symbole non plus...

Je vais donc créer un bouton, en code pour ainsi le dupliquer.

En tout cas, un grand merci pour ton aide et pour ta réponse si rapide!
mercredi 6 mai 2009 à 13:10:49 | Re : Problème d'affichage du background en Flash MX 2004

Girou

Membre Club
Réponse acceptée !

curr_item = curr_menu.attachMovie("menuitem","item"+i+"_mc", i);

attachmovie -> placer sur la scene une symbole (movieclip) existant dans la bibliotheque (dont le nom de liaison est "menuitem")
Il doit donc y avoir un symbole DANS la bibliotheque même si il n'y a rien sur la scène

C'est là que tu peux l'éditer (enlever le cadre noir)

// Largeur du menu
curr_item._width = 130; // là on peut changer la largeur d'un element de sous menu

// Couleur du texte du menu
curr_item.name.textcolor = 0x13571e; //  changement de la couleur du champ de texte (nom d'occurence name qui se trouve dans l'élément du menu (curr_item)

@+

signature not found
mercredi 6 mai 2009 à 13:27:13 | Re : Problème d'affichage du background en Flash MX 2004

Aigle2

Réponse acceptée !
SUPER!!!!!!!!!!!!

Je n'ai plus du tout pensé à la fenêtre bibliothèque. Maintenant j'ai sû résoudre mes problèmes grâce à toi!

Un tout tout grand merci!
mercredi 6 mai 2009 à 17:14:36 | Re : Problème d'affichage du background en Flash MX 2004

Aigle2

Réponse acceptée !
Re-bonjour à tous!

J'ai réussi à faire la modification de la taille de police de caractères ainsi que la mise en forme, en modifiant sur le symbole, et ça fonctionne, mais j'aimerais le faire sous forme de code. J'ai essayé, mais il ne change rien!

Voici mon code avec mes modifications (=> en gras) :

******************************************************************

// generates a list of menu items (effectively one menu)
// given the inputted parameters.  This makes the main menu
// as well as any of the submenus
GenerateMenu = function(container, name, x, y, depth, node_xml)
{
    // variable declarations
    var curr_node;
    var curr_item;
    var curr_menu = container.createEmptyMovieClip(name, depth);
   
    // for all items or XML nodes (items and menus)
    // within this node_xml passed for this menu
    for (var i=0; i<node_xml.childNodes.length; i++)
    {
        // movieclip for each menu item
        curr_item = curr_menu.attachMovie("menuitem","item"+i+"_mc", i);
        curr_item._x = x;
        curr_item._y = y + i*curr_item._height;
        curr_item.trackAsMenu = true;
       
        // item properties assigned from XML
        curr_node = node_xml.childNodes[i];
        curr_item.action = curr_node.attributes.action;
        curr_item.variables = curr_node.attributes.variables;
        curr_item.name.text = curr_node.attributes.namemenu;
       
        // Alignement du texte des menus à gauche
        curr_item.name.autosize = "left";
    //    curr_item.name.wordWrap = false;
        // Largeur du menu
    //    curr_item._width = 120;
        // Hauteur du menu
        //curr_item._height = 30;
        // Couleur du menu
        var ma_couleur = new Color(curr_item.background);
        ma_couleur.setRGB(0x92d74b);
       
        // Couleur du texte du menu
        curr_item.name.textcolor = 0x13571e;
    //    curr_item.name.background = false;

        var myTextFormat = new TextFormat();
        myTextFormat.bold = true;
        myTextFormat.italic = true;
        myTextFormat.font = "Arial";
        myTextFormat.color = 0xFF0000;
        myTextFormat.size = 16;
        curr_item.setTextFormat(myTextFormat);



        // item submenu behavior for rollover event
        if (node_xml.childNodes[i].nodeName == "menu")
        {
            // open a submenu
            curr_item.node_xml = curr_node;
            curr_item.onRollOver = curr_item.onDragOver = function()
            {
                var x = this._x + this._width + 0.2;
                var y = this._y + 0;
                GenerateMenu(curr_menu, "submenu_mc", x, y, 1000, this.node_xml);
                // Changement de couleur du menu lors de la survol
                var col = new Color(this.background);
                col.setRGB(0xb45f27);
            };
        }
        else
        { // nodeName == "item"
            curr_item.arrow._visible = false;
            // close existing submenu
            curr_item.onRollOver = curr_item.onDragOver = function()
            {
                curr_menu.submenu_mc.removeMovieClip();
                // Changement de couleur du sous-menu lors de la survol
                var col = new Color(this.background);
                col.setRGB(0xb45f27);
            };
        }
       
        curr_item.onRollOut = curr_item.onDragOut = function()
        {
            // Restauration de la couleur de départ du menu
            var col = new Color(this.background);
            col.setRGB(0x92d74b);
        };
       
        // any item, menu opening or not can have actions
        curr_item.onRelease = function()
        {
            Actions[this.action](this.variables);
            CloseSubmenus();
        };
    } // end for loop
};

// create the main menu, this will be constantly visible
CreateMainMenu = function(x, y, depth, menu_xml)
{
    // generate a menu list
    GenerateMenu(this, "mainmenu_mc", x, y, depth, menu_xml.firstChild);
    // close only submenus if visible durring a mouseup
    // this main menu (mainmenu_mc) will remain
    mainmenu_mc.onMouseUp = function()
    {
        if (mainmenu_mc.submenu_mc && !mainmenu_mc.hitTest(_root._xmouse, _root._ymouse, true))
        {
            CloseSubmenus();
        }
    };
};

// closes all submenus by removing the submenu_mc
// in the main menu (if it exists)
CloseSubmenus = function()
{
    mainmenu_mc.submenu_mc.removeMovieClip();
};

// This actions object handles methods for actions
// defined by the XML called when a menu item is pressed
Actions = Object();
Actions.gotoURL = function(urlVar)
{
    getURL(urlVar, "_self");
};

// load XML, when done, run CreateMainMenu to interpret it
menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok)
{
    // create main menu after successful loading of XML
    if (ok)
    {
        CreateMainMenu(10, 10, 0, this);
    }
};
// load first XML menu
menu_xml.load("datas.xml");
******************************************************************

C'est pourtant bien "curr_item", mon champs texte! Pourquoi ne fait-il aucune modification? Est-ce que j'utilise mal la méthode "setTextFormat()"?

Encore merci d'avance à tous pour votre aide.
mercredi 6 mai 2009 à 20:21:37 | Re : Problème d'affichage du background en Flash MX 2004

Girou

Membre Club
Réponse acceptée !

curr_item est le clip qui contient le champ de texte

curr_item.name.setTextFormat(myTextFormat);

@+

signature not found
mercredi 6 mai 2009 à 22:38:15 | Re : Problème d'affichage du background en Flash MX 2004

Aigle2

Réponse acceptée !
ça marche pas non plus... Là, il m'efface tous les noms des items...
jeudi 7 mai 2009 à 09:02:17 | Re : Problème d'affichage du background en Flash MX 2004

Girou

Membre Club
Réponse acceptée !
enlève cette ligne là

myTextFormat.font = "Arial";

si tu veux intégrer des polices de caractères, la procédure est plus complexe. (fait une recherche sur flashkod ou google pour ce type de probleme)

@+

signature not found

1 2

Cette discussion est classée dans : problème, menu, flash, background, mx


Répondre à ce message

Sujets en rapport avec ce message

Background de mon menu [ par tweeder ] Étant pur newbie de la programmation flashje me soumets a vos moqueries en vous posant 2 questions qui sont surement simplices 1- Comment puis-je ajus pb menu déroulant [ par chikau ] bonjour,je débute et voudrais créer un site.Deux questions :dans document xml lié à un menu déroulant créé avec flash mx, comment faire pour avoir des Flash MX et XML [ par Kiouz ] Voila j'ai un menu en XML qui se trouve dans un swf à part. Dans celui-ci, il apparait et marche normalement.Mais quand je charge ce swf avec loadMovi Problème aide svp! [ par deathperados ] Bonjour a tous!Je debute en flash et jai un leger problème! Je souhaite faire un texte defilant vec flash MX et lorseque je le fais et que je teste la Pb flash mx et modèle menu à onglet + xml [ par patochdu77 ] Bonjour,J'ai créer un menu à onglet avec le modèle de flash mx 6 et je l'ai inséré dans mon animation. Dans mon xml un des onglet peut etre un lien ve Problème de netteté avec Flash MX [ par Yoteco ] Allez svp lire ce document...j'y explique mon problème:http://membres.lycos.fr/yoteco/flash.htmMerci...Et une côtellette à la bière pour Gérard Problème de sous-menu [ par phobus ] Bonjour,En fait, j'ai un problème dans Flash pour faire fonctionner un sous menu dans un site que je fais... je m'explique :Dans la séquence1, j'ai pl [Flash MX]Menu et rollOut [ par chrisisis ] Bonjour,J'ai un menu en flash avec un sous menu, la taille du flash correspond à celle du menu plus le sous menu.J'ai un menu principal, qui contient Problème de réinitialisation / menu en flash [ par Titam78 ] Bonjour,Voila petit souci. J'ai fait un menu et tout va bien, je l'ai intégré à ma page php.Mais regardez, j'ai un problème : http://www.hollinae.com/ Flash Mx Pc/Mac [ par Marie Carole ] Bonjour,J'ai un petit soucis : j'ai fais un site en utilisant Flash Mx sur un Pc, et, alors qu'il fonctionne correctement sur les autres Pc, il semble


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,468 sec (3)

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