blet8533 | SAlut, Je viens de terminé une premiere ébauche de ma premiere classe AS2.0 et je voulais avoir votre avis sur la syntaxe et sur la structure.
Des exemples et le code sont accessibles sur http://manubonnet.free.fr/blog/files/menu/menu.html
Voici la classe :
Code :
- class menu {
- private var conteneur_mc:MovieClip;
- private var conteneurParties_mc:MovieClip;
- private var conteneurSousParties_mc:MovieClip;
- private var cible_mc:MovieClip;
- private var parties_mc:MovieClip;
- private var sousParties_mc:MovieClip;
- private var chargeurImage:MovieClipLoader;
- private var orientationMenu:String;
- private var chemin:String;
- private var menuXML:XML;
- private var largeur:Number;
- private var hauteur:Number;
- private var Coordx:Number;
- private var Coordy:Number;
- private var profondeur:Number;
- private var policePartie:String = "Arial";
- private var taillePartie:Number = 13;
- private var espacePartie:Number = 10;
- private var couleurPartie:Number = 0x000000;
- private var couleurFondPartie:Number = 0xFFFFFF;
- private var couleurBordurePartie:Number = 0xCCCCCC;
- private var courbeBordurePartie:Number = 0;
- private var couleurFondOverPartie:Number = 0xFFFFFF;
- private var couleurBordureOverPartie:Number = 0xFFFFFF;
- private var tailleBordurePartie:Number = 1;
- private var policeSousPartie:String = "Arial";
- private var tailleSousPartie:Number = 10;
- private var espaceSousPartie:Number = 20;
- private var couleurSousPartie:Number = 0x000000;
- private var couleurFondSousPartie:Number = 0xFFFFFF;
- private var couleurBordureSousPartie:Number = 0xEEEEEE;
- private var courbeBordureSousPartie:Number = 0;
- private var couleurFondOverSousPartie:Number = 0xFFFFFF;
- private var couleurBordureOverSousPartie:Number = 0xFFFFFF;
- private var tailleBordureSousPartie:Number = 1;
- private var tempoQuit:Number = 500;
- private var pos:Number = espacePartie/2;
- public function menu(cible:MovieClip,
- chemin:String,
- x:Number,
- y:Number,
- l:Number,
- h:Number,
- orient:String,
- tempo:Number,
- profondeur:Number) {
- this.cible_mc = cible;
- this.chemin = chemin;
- this.orientationMenu = orient;
- this.tempoQuit = tempo;
- this.profondeur = profondeur;
- (l == null or l == "undefined" ) ? this.largeur = Stage.width : this.largeur = l;
- (h == null or h == "undefined" ) ? this.hauteur = Stage.height : this.hauteur = h;
- this.Coordx = x;
- this.Coordy = y;
- }
- public function creerMenu():Void {
- trace("Methode : creerMenu" );
- creerConteneurPrincipal(this.Coordx, this.Coordy);
- chargeXML();
- }
- //Créer le conteneur principal
- private function creerConteneurPrincipal(x:Number, y:Number):Void {
- trace("Methode : creerConteneurPrincipal" );
- conteneur_mc = cible_mc.createEmptyMovieClip("conteneur_mc", profondeur);
- conteneur_mc._x = x;
- conteneur_mc._y = y;
- creerConteneurParties();
- }
- //Créer le conteneur des parties
- private function creerConteneurParties():Void {
- trace("Methode : creerConteneurParties" );
- conteneurParties_mc = conteneur_mc.createEmptyMovieClip("conteneurParties_mc", 1);
- creerCadre(conteneurParties_mc, largeur, hauteur, couleurFondPartie, couleurBordurePartie, tailleBordurePartie, courbeBordurePartie);
- }
- //Créer le conteneur des sous-parties
- private function creerConteneurSousParties(partie:Number, position:Number, nbSousPartie:Number):Void {
- trace("Methode : creerConteneurSousParties" );
- var moi:Object = this;
- conteneurSousParties_mc = conteneur_mc.createEmptyMovieClip("conteneurSousParties_mc", conteneur_mc.getNextHighestDepth());
- fonduApparition(conteneurSousParties_mc,"on" );
- if(orientationMenu == "horizontal" ) {
- conteneurSousParties_mc._x = position;
- conteneurSousParties_mc._y = hauteur;
- } else if(orientationMenu == "vertical" ) {
- conteneurSousParties_mc._x = largeur;
- conteneurSousParties_mc._y = position;
- }
- creerSousParties(partie, nbSousPartie);
- }
- //Créer un cadre de fond
- function creerCadre(cible:MovieClip, l:Number, h:Number, couleurFond:Number, couleurBordure:Number, tailleBordure:Number, courbeBordure:Number):Void {
- trace("Methode : creerCadre" );
- cible.createEmptyMovieClip("cadre_mc", 0);
- cible.cadre_mc.moveTo(0, 0);
- cible.cadre_mc.beginFill(couleurFond);
- cible.cadre_mc.lineStyle(tailleBordure, couleurBordure);
- cible.cadre_mc.lineTo(l-courbeBordure, 0);
- cible.cadre_mc.curveTo(l, 0, l, courbeBordure);
- cible.cadre_mc.lineTo(l, h-courbeBordure);
- cible.cadre_mc.curveTo(l, h, l-courbeBordure, h);
- cible.cadre_mc.lineTo(courbeBordure, h);
- cible.cadre_mc.curveTo(0, h, 0, h-courbeBordure);
- cible.cadre_mc.lineTo(0, 0);
- cible.cadre_mc.endFill();
- }
- //Charge le fichier XML du menu
- private function chargeXML():Void {
- trace("Methode : chargeXML" );
- var moi:Object = this;
- menuXML = new XML();
- menuXML.ignoreWhite = true;
- menuXML.load(chemin);
- menuXML.onLoad = function(success:Boolean)
- {
- if(success)
- moi.creerParties();
- }
- }
- //Afficher les parties
- private function creerParties():Void {
- trace("Methode : creerParties" );
- parties_mc = conteneurParties_mc.createEmptyMovieClip("parties_mc", 1);
- var nbPartie:Number = menuXML.firstChild.childNodes.length;
- for(var numero:Number = 0; numero<nbPartie; numero++) {
- afficherPartie(numero);
- }
- }
- //Afficher les sous parties
- private function creerSousParties(partie:Number, nbSousPartie:Number):Void {
- trace("Methode : creerSousParties" );
- sousParties_mc = conteneurSousParties_mc.createEmptyMovieClip("sousParties_mc", 1);
- for(var numero:Number = 0; numero<nbSousPartie; numero++) {
- afficherSousPartie(partie,numero);
- }
- creerCadre(conteneurSousParties_mc, sousParties_mc._width+espaceSousPartie, sousParties_mc._height, couleurFondSousPartie, couleurBordureSousPartie, tailleBordureSousPartie, courbeBordureSousPartie);
- }
- //Création du bouton
- private function afficherPartie(numero:Number):Void {
- trace("Methode : afficherPartie" );
- var moi:Object = this;
- //Infos sur la partie
- var nomPartie:String = menuXML.firstChild.childNodes[numero].attributes.nom;
- var srcPartie:Function = menuXML.firstChild.childNodes[numero].attributes.src;
- var nbSousPartie:Number = menuXML.firstChild.childNodes[numero].childNodes.length;
- //Création du bouton
- var bouton_mc:MovieClip = parties_mc.createEmptyMovieClip("bouton_mc"+numero, numero);
- if(orientationMenu == "horizontal" ) {
- bouton_mc._x = pos;
- } else if(orientationMenu == "vertical" ) {
- bouton_mc._y = pos;
- bouton_mc._x = espacePartie/2;
- }
- bouton_mc.onRollOver = function () {
- if(moi.orientationMenu == "horizontal" ) {
- moi.creerCadre(this, this._width+moi.espacePartie, moi.hauteur, moi.couleurFondOverPartie, moi.couleurBordureOverPartie, 0, 0);
- this.cadre_mc._x = -(moi.espacePartie/2);
- } else if(moi.orientationMenu == "vertical" ) {
- moi.creerCadre(this, moi.largeur, this._height, moi.couleurFondOverPartie, moi.couleurBordureOverPartie, 0, 0);
- this.cadre_mc._x = -(moi.espacePartie/2);
- }
- if(nbSousPartie>0) {
- if(moi.orientationMenu == "horizontal" )
- moi.creerConteneurSousParties(numero, this._x-(moi.espacePartie/2), nbSousPartie);
- else if(moi.orientationMenu == "vertical" )
- moi.creerConteneurSousParties(numero, this._y, nbSousPartie);
- } else {
- moi.fonduApparition(moi.conteneurSousParties_mc,"off" );
- }
- }
- bouton_mc.onRollOut = function () {
- this.cadre_mc.removeMovieClip();
- if (!moi.conteneurSousParties_mc(_xmouse, _ymouse, false)) {
- moi.fonduApparition(moi.conteneurSousParties_mc,"off" );
- }
- }
- bouton_mc.onPress = function () {
- moi.chargeSrc(srcPartie);
- }
- //Création de la zone de texte
- var bouton_txt:TextField = bouton_mc.createTextField("bouton_txt", 1, 0, 0, 0, 0);
- bouton_txt.autoSize = true;
- bouton_txt.text = nomPartie;
- bouton_txt.selectable = false;
- //Création des styles du texte
- var mon_format:TextFormat = new TextFormat(policePartie, taillePartie, couleurPartie);
- bouton_txt.setTextFormat(mon_format);
- if(orientationMenu == "horizontal" )
- pos = bouton_txt._width+bouton_mc._x+espacePartie;
- else if(orientationMenu == "vertical" )
- pos = bouton_txt._height+bouton_mc._y+espacePartie;
- }
- //Création du bouton
- private function afficherSousPartie(partie:Number,numero:Number):Void {
- trace("Methode : afficherSousPartie" );
- var moi:Object = this;
- //Variables de la partie
- var nomSousPartie:String = menuXML.firstChild.childNodes[partie].childNodes[numero].attributes.nom;
- var srcSousPartie:String = menuXML.firstChild.childNodes[partie].childNodes[numero].attributes.src;
- //Création du bouton
- var bouton_mc:MovieClip = sousParties_mc.createEmptyMovieClip("bouton_mc"+numero, numero);
- bouton_mc._y = espaceSousPartie*numero;
- bouton_mc._x = (espaceSousPartie/2);
- bouton_mc.onPress = function () {
- moi.chargeSrc(srcSousPartie);
- }
- bouton_mc.onRollOver = function () {
- moi.creerCadre(this, moi.sousParties_mc._width+moi.espaceSousPartie, this._height, moi.couleurFondOverSousPartie, moi.couleurBordureOverSousPartie, 0, 0);
- this.cadre_mc._x = -this._x;
- }
- bouton_mc.onRollOut = function () {
- this.cadre_mc.removeMovieClip();
- }
- //Création de la zone de texte
- var bouton_txt:TextField = bouton_mc.createTextField("bouton_txt", 1, 0, 0, 0, 0);
- bouton_txt.autoSize = true;
- bouton_txt.text = nomSousPartie;
- bouton_txt.selectable = false;
- //Création des styles du texte
- var mon_format:TextFormat = new TextFormat(policeSousPartie, tailleSousPartie, couleurSousPartie);
- bouton_txt.setTextFormat(mon_format);
- }
- private function fonduApparition(cible:MovieClip, type:String):Void {
- trace("Methode : fonduApparition : "+type);
- var tempo:Number = getTimer()+tempoQuit;
- var moi:Object = this;
- var fondu:Boolean = false;
- (type == "on" ) ? cible._alpha = 0 : cible._alpha = 100
- cible.onEnterFrame = function () {
- if(type == "on" ) {
- this._alpha += 15;
- if(this._alpha>100)
- delete this.onEnterFrame;
- } else if(type == "off" && (!moi.conteneurSousParties_mc.hitTest(_xmouse, _ymouse, false) or fondu == true) && getTimer()>tempo) {
- fondu = true;
- this._alpha -= 15;
- if(this._alpha<0) {
- delete this.onEnterFrame;
- this.removeMovieClip();
- }
- }
- }
- }
- private function chargeSrc(src:String):Void {
- trace("Methode : chargeSrc" );
- if(src != "" && src != "undefined" ) {
- var swf_mc:MovieClip;
- swf_mc = conteneur_mc.createEmptyMovieClip("swf_mc", 0);
- swf_mc.loadMovie(src);
- }
- }
- //------------- STYLES --------------//
- //Définir les styles des parties
- public function StyleParties(police:String,
- taille:Number,
- espace:Number,
- couleur:Number,
- couleurFond:Number,
- couleurBordure:Number,
- tailleBordure:Number,
- courbeBordure:Number,
- couleurFondOver:Number,
- couleurBordureOver:Number):Void {
- this.policePartie = police;
- this.taillePartie = taille;
- this.espacePartie = espace;
- this.pos = espace/2;
- this.couleurPartie = couleur;
- this.couleurFondPartie = couleurFond;
- this.couleurBordurePartie = couleurBordure;
- this.tailleBordurePartie = tailleBordure;
- this.courbeBordurePartie = courbeBordure;
- this.couleurFondOverPartie = couleurFondOver;
- this.couleurBordureOverPartie = couleurBordureOver;
- }
- //Définir les styles des sous parties
- public function StyleSousParties(police:String,
- taille:Number,
- espace:Number,
- couleur:Number,
- couleurFond:Number,
- couleurBordure:Number,
- tailleBordure:Number,
- courbeBordure:Number,
- couleurFondOver:Number,
- couleurBordureOver:Number):Void {
- this.policeSousPartie = police;
- this.tailleSousPartie = taille;
- this.espaceSousPartie = espace;
- this.couleurSousPartie = couleur;
- this.couleurFondSousPartie = couleurFond;
- this.couleurBordureSousPartie = couleurBordure;
- this.tailleBordureSousPartie = tailleBordure
- this.courbeBordureSousPartie = courbeBordure;
- this.couleurFondOverSousPartie = couleurFondOver;
- this.couleurBordureOverSousPartie = couleurBordureOver;
- }
- }
|
et la déclaration de la classe :
Code :
- Création du menu
- //var monMenuH:menu = new menu('cible', 'chemin du menu', x, y, largeur, hauteur, 'orientation', tempo, profondeur);
- var monMenuH:menu = new menu(this, 'menu.xml', 0, 0, null, 18, "horizontal", 100, 0);
- //monMenuH.StyleParties('Police', taille, espace, couleur, couleurDeFond, couleurDeBordure, tailledeBordure, courbeCadre, couleurdeFondOver, couleurdeBordureOver);
- monMenuH.StyleParties("Verdana", 11, 10, 0x000000, 0xE0E2EB, 0xCCCCCC, 0, 0, 0xBBB7C7, 0xBBB7C7);
- //monMenuH.StyleSousParties('Police', taille, espace, couleur, couleurDeFond, couleurDeBordure, tailledeBordure, courbeCadre, couleurdeFondOver, couleurdeBordureOver);
- monMenuH.StyleSousParties("Verdana", 11, 18, 0x000000, 0xF8F8F8, 0xCCCCCC, 1, 5, 0xBBB7C7, 0xBBB7C7);
- //monMenuH.creerMenu();
- monMenuH.creerMenu();
|
avec la structure de l'xml :
Code :
- <menu>
- <partie nom="Utilisation" src="">
- <souspartie nom="Mise en place" src="src/mise_en_place.swf" />
- <souspartie nom="Les paramétres par défaut" src="src/defaut.swf" />
- <souspartie nom="" src="" />
- <souspartie nom="La source" src="src/source.swf" />
- </partie>
- <partie nom="Exemples" src="">
- <souspartie nom="Menu vertical" src="src/exemple2.swf" />
- <souspartie nom="Menu super méga kitch" src="src/exemple3.swf" />
- </partie>
- <partie nom="Evolution" src="">
- <souspartie nom="Fonctionnalités en projet" src="src/projet.swf" />
- <souspartie nom="A vous de participer" src="src/participer.swf" />
- </partie>
- <partie nom="A propos" src="src/a_propos.swf" />
- </menu>
|
Merci pour vos avis, c'est tres important pour moi. |