Classe personnalisée et DepthManager

Résolu
Messages postés
7
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
11 août 2006
-
Messages postés
7
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
11 août 2006
-
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

Messages postés
7
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
11 août 2006

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
Messages postés
1058
Date d'inscription
jeudi 24 juillet 2003
Statut
Modérateur
Dernière intervention
14 février 2009

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
Messages postés
7
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
11 août 2006

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
Messages postés
7
Date d'inscription
mardi 21 mars 2006
Statut
Membre
Dernière intervention
11 août 2006

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)
Messages postés
1058
Date d'inscription
jeudi 24 juillet 2003
Statut
Modérateur
Dernière intervention
14 février 2009

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