IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

[AS2] Un texte bouge, avec classe


Sujet :

Flash

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [AS2] Un texte bouge, avec classe
    Salut tout le monde...

    Je sais pas trop par ou commencer...
    Je voudrais (pour simplifier) des clips différents, mais sur le même modele...
    Ce qui change, dans chacun de ces clips, c'est (toujours pour simplifier) des zone de textes... Ces derniers sont toutes animées de la même facon dans chaque clips...

    Je me suis dis, pourquoi ne pas faire un classe que j'instancierais a chaque fois, et que je 'spécialiserais' a l'execution... (clip1.setValue1 = "truc"; // etc....)

    Bah oui, mais en pratique, je vois pas trop comment faire, je me perds dans les hiérarchies etc...

    je pensais a un truc comme ca pour creer les objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class CTextKiBouge extends MovieClip{
    	public var theText:String;
    
    	public function CTextKiBouge (_text:String){
    		this.theText=_text;
    		var level:Number = this.getNextHighestDepth()
    		var lelabel:TextField = this.createTextField("labbel",level, 0, 0, 150, 20);
    		trace(lelabel);
    		lelabel.text = "Hello World";
    		trace(lelabel.text);
    	}
    
    	public function Bouge( params ){
    		...
    	}
    }

    La fonction getNextHighestDepth() renvoie undefined, et donc rien ne fonctionne... pourquoi ? Que dois-je faire ?

    Merci !

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Salut

    La fonction getNextHighestDepth() renvoie undefined
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.getNextHighestDepth()
    this ici represente ta class CTextKiBouge qui reprend les methode de la class MovieClip (car extends MovieClip) ....
    Le probleme c'est que getNextHighestDepth() retourne la profondeur d'un clip instancier or ce n'est pas la profondeur d'un clip instancier que tu donne en parametre mais la class instancier.
    Il faudrais pour que ca marche faire un truc dans ce genre (j'ai pas réussit car _droptarget ne me renvoi jamais rien ...) de toute façon, c'est mauvaise méthode ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(this._droptarget).getNextHighestDepth()
    Moi je te conseilerai de faire autrement .
    Comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function CTextKiBouge (_target:MovieClip, _text:String){
    	this.theText=_text;
    	this.target=_target;
     
    	_target.createTextField("labbel",_target.getNextHighestDepth(), 0, 0, 150, 20);
    	_target.labbel.text=_text;
    }
     
    function set changeText(_text:String)
    {
    	target.labbel.text=_text;
    }

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ok, j'ai fais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class CTextKiBouge {
      public var theText:String;
      public var target:MovieClip;
      public function CTextKiBouge (_target:MovieClip, _text:String){
        this.theText=_text;
        this.target=_target;
        trace(this.target); // [object Object]
        trace(_target);     // [object Object]
        var level:Number = _target.getNextHighestDepth();
        trace(level);       // undefined !!!!
        _target.createTextField("labbel",level, 0, 0, 150, 20);
        _target.labbel.text=_text;
      }
    
      function set changeText(_text:String){
        target.labbel.text=_text;
      }
    }
    Donc, j'ai pas de TextField instancié...

    Quand je fabrique mon objet, je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import CTextKiBouge;
    mc = new MovieClip;
     
    var unObjetKiBouge:CTextKiBouge = new CTextKiBouge(mc,"Du texte super!");
    unObjetKiBouge.methodeBidule(...);
    J'ai bon pour cela ? Est-ce que mon probleme vient de la ?

  4. #4
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Ca me fai penser a du AS3 ca ... Et personnelement, je ne m'y suis pas encore m'y.

    Mais je suppose que tu fais de l'AS1/2.


    La "correction" rapide est celle là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var mc:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
    var unObjetKiBouge:CTextKiBouge = new CTextKiBouge(mc,"Du texte super!");
    Je m'étonne que flash ne te renvoie aucune d'érreur avec :pour conprendre, fais un trace(mc) juste avant d'instancier ta class CTextKiBouge. Essay sans la "correction" et avec.(Avec la "correction, tu aurras le chemin d'un clip alors que sans la "correction" tu aurra normalement : undefined ou [Object])

    La "correction" plus élaboré lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    class CTextKiBouge {
      static var num:Number=new Number(0);
      private var theText:String;//private : on utilise l'encapsulation
      private var target:MovieClip;//private : on utilise l'encapsulation
     
      public function CTextKiBouge (_target:MovieClip, _text:String){
        this.theText=_text;
     
        /*
        On crée un clip qui contiendra le champs de texte.
        */
        this.target = _target.createEmptyMovieClip("container"+num, _target.getNextHighestDepth());
     
        var level:Number = this.target.getNextHighestDepth();//pour la maintenabilité
     
        this.target.createTextField("labbel",level, 0, 0, 150, 20);
        this.target.labbel.border=true;//le texte est encadré
        this.target.labbel.text=_text;
     
        this.dessineContourDuClipDeTextKiBouge();//facultatif
     
        //on incremente num afin de donner un nom unique au clip crée par CTextKiBouge
        num++;
      }
     
      public function set changeText(_text:String){
        this.target.labbel.text=_text;
      }
      public function moveText(x:Number,y:Number){
        this.target._x=x;
        this.target._y=y;
      }
     
      private function dessineContourDuClipDeTextKiBouge()
      {
        this.target.lineStyle(5, 0xFF00FF, 100);
        this.target.moveTo(0, 0);
        this.target.lineTo(200, 0);
        this.target.lineTo(200, 200);
        this.target.lineTo(0, 200);
      }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var my_arratOfTextKiBouge:Array=new Array();
    for(var i:Number;i<3;i++)
    {
    my_arratOfTextKiBouge[i] = new CTextKiBouge(this,"Mon texte "+i);
    my_arratOfTextKiBouge[i].moveText(i*200+10,10);
    }

    Si il y a des chose qui te semble étrange : demande.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci bcp !

    Je pense pouvoir m'en sortir maintenant...

    Pour ce qui est des choses bizarres, y en a trop, je verrais plus tard...

    Merci encore

Discussions similaires

  1. Problème avec la méthode Text() de la classe QLineEdit
    Par bilou_2007 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/01/2011, 19h33
  2. Editeur de texte avec classes génériques
    Par birdy85 dans le forum Général Java
    Réponses: 12
    Dernier message: 11/04/2008, 23h20
  3. lire et changer le contenu d'texte.txt avec javascript?!
    Par Squalli dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/08/2005, 18h20
  4. Heritage de classe avec classes internes
    Par Regis.C dans le forum Langage
    Réponses: 11
    Dernier message: 27/04/2005, 12h19
  5. Réponses: 3
    Dernier message: 05/04/2005, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo