Classe personnalisée et DepthManager

Résolu
fredericleput Messages postés 7 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 11 août 2006 - 10 août 2006 à 15:28
fredericleput Messages postés 7 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 11 août 2006 - 11 août 2006 à 18:28
j'ai construit une petite classe Element pour tester quelques petits trucs. Elle contient une propriété _mcConteneur de type MovieClip qui me sert à attacher un clip vide issu de la bibliothèque (nom de liaison mc_vide). J'ai ensuite créé une méthode dessine qui doit attacher à l'intérieur de _mcConteneur un autre clip issu de la bibliothèque (nom de liaison  mc_bouton). Pour gérer les profondeurs j'utilise la classe DepthManager (indispensable si on veut par la suite utiliser des composants V2...)

Mon problème est que si je teste cela je n'ai aucune erreur mais je n'ai aucun clip d'afficher sur la scène... Si quelqu'un peut m'indiquer mon erreur...

=====================================================================
le fichier de la classe Element du package com

/*
Classe Element
*/

// pour gérer les profondeurs
import mx.managers.DepthManager;
 
 class com.Element extends MovieClip
{
    // clip vide contenant les autres
    private var _mcConteneur:MovieClip;
    
    // clip bouton pour la représentation graphique
    private var _mcBouton:MovieClip;
    
    // gestion des profondeurs
    private var createChildAtDepth:Function;
    
    // Constructeur
    function Element()
    {
        trace("[Element] Constructeur");
        _mcConteneur = this.createChildAtDepth("mc_vide", DepthManager.kTop);
    }
    
    // dessine l'élément
    public function dessine(Void):Void
    {
        trace("dessine");
        _mcBouton = _mcConteneur.createChildAtDepth("mc_bouton", DepthManager.kTop);
    }
}

=====================================================================
dans le .fla de test voici le code

import com.Element;

var element1:Element = new Element();
element1.dessine();

5 réponses

fredericleput Messages postés 7 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 11 août 2006
11 août 2006 à 18:28
Salut, ça y est c'est résolu. Pour info la classe DepthManager fonctionne très bien mais pour cela il faut absolument avoir un composant V2 dans la bibliothèque. Mon problème n'était donc pas au niveau du code.... Merci
3
cs_Mafassure Messages postés 1058 Date d'inscription jeudi 24 juillet 2003 Statut Modérateur Dernière intervention 14 février 2009
10 août 2006 à 17:14
salut,

ta class etand MovieClip, elle ne peut pas etre instancier  "new" !! elle doit etre lié a movieClip et l'instantion ce fera lorsque le clip apparaitra sur la scene (soit avec l'ide , soit attacheMovie)

ActionScript Experience
0
fredericleput Messages postés 7 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 11 août 2006
10 août 2006 à 17:16
ok admettons, je suis donc obliger de créér un clip dans la bibliotheque, de le lier à ma classe Element et de l'attacher ensuite sur la scene.... je teste pour voir
0
fredericleput Messages postés 7 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 11 août 2006
10 août 2006 à 17:35
comprends toujours pas....

j'ai créér un clip nommé mcElement avec un identifiant de liaison mcElement, et lié avec ma classe AS2 com.Element.

j'ai modifié ma classe de la manière suivante

// pour gérer les profondeurs
import mx.managers.DepthManager;
 
 class com.Element extends MovieClip
{
    // clip vide contenant les autres
    private var _mcConteneur:MovieClip;
   
    // gestion des profondeurs
    private var createChildAtDepth:Function;
   
    // Constructeur
    function Element()
    {
        trace("[Element] Constructeur");
    }
   
    public function dessine(Void):Void
    {
        _mcConteneur = this.createChildAtDepth("mc_bouton", DepthManager.kTop);
       
        if(_mcConteneur == null)
        {
            trace("pb");
        }
    }
}

dans le fla je fais :

import mx.managers.DepthManager;
import com.Element;

_root.attachMovie("mcElement","elmt1",1);
elmt1.dessine();

le constructeur de la classe est bien appelé (en sortie j'ai bien mon action trace)
mais la fonction dessine ne fonctionne toujours pas.

et je n'ai toujours rien sur la scène.... En plus j'utilise attachMovie (j'aime pas ça mais bon...)

En tous cas merci de te pencher sur le problème (j'ai posté le même message sur d'autres forum depuis plus de 2 heures et toujours pas de réponse)
0

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

Posez votre question
cs_Mafassure Messages postés 1058 Date d'inscription jeudi 24 juillet 2003 Statut Modérateur Dernière intervention 14 février 2009
11 août 2006 à 11:46
salut,

a tu résolu ton pb ??
je ne connais pas DepthManager, la live doc indique pourtant que la methode createChildAtDepth() retourn une occurance mais je sais pas pourquoi ici ca marche pas 
 sinon crée l'instant de mcConteneur avec createEmptyMovieClip
 function Element()
    {
        trace("[Element] Constructeur");
        _mcConteneur = this.createEmptyMovieClip("_mcConteneur", DepthManager.kTop);
        trace(_mcConteneur.getDepth());
       
    }
  
et pareil pour le bouton

ActionScript Experience
0
Rejoignez-nous