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

ActionScript 3 Discussion :

[AS3] Modification d'un texte dans un MovieClip en Dynamic


Sujet :

ActionScript 3

  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    40
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par d�faut [AS3] Modification d'un texte dans un MovieClip en Dynamic
    Bonjour,

    Voil� je d�bute mon apprentissage de l'action script 3. Et la je cherche � modifier un TextField contenu dans un Movie Clip. J'ai trouv� �a qui me semble correcte, en debug toutes les valeurs correspondent, je n'ai pas d'erreur dans la console mais � l'affichage je n'ai aucun r�sultat (j'ai encore l'ancien texte et pas le nouveau).


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    var mc:MovieClip = new MC_Messages();
    TextField(MovieClip(mc).getChildByName("txt_messagee")).text = "Nouveau texte";
    'mc' est mon movie clip et 'txt_message' est le nom de mon objet TextField.

    Merci d'avance .

  2. #2
    Membre chevronn� Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par d�faut
    T'es sur qu'il y a deux 'e' � txt_messagee ?

    Sinon voila un code qui me semble plus simple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var mm:MC_Messages = new MC_Messages();
    var tf:TextField = mm.txt_messagee;
    tf.text = 'new Text';

  3. #3
    Membre exp�riment�
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Par d�faut
    C'est tr�s bizarre ce que tu as �crit...

    avec MovieClip(mc) tu forces le cast de ton MC_Messages en MovieClip, alors que c'est d�j� un MovieClip �tendu. En ce sens, il serait normal que MovieClip ne dispose pas des propri�t�s de MC_Messages. Tu ne pourrais alors plus acc�der � tes propri�t�s, dont ton champ texte.

    Ensuite, getChildByName() renvoie un DisplayObject, pas un TextField. Tu n'as donc pas acc�s � la propri�t� text de TextField sur le DisplayObject. C'est pourquoi, j'imagine, que tu forces un cast avec le premier TextField(...).

    Mais c'est tout mal branl�... Il semble que tu n'aies pas bien compris les notions de typage objet et particuli�rement de la notion d'h�ritage. Relis en ce sens la documentation de l'AS3.

    Si j'ai bien compris, tu as construit un MovieClip dans lequel tu as mis un champ texte. A ce moment, il faut bien comprendre ceci (j'insiste, mais c'est pour �tre s�r d'�tre clair):

    - Les objets de type MovieClip ne contiennent pas de champ texte pas d�faut (c'est d'ailleurs pour �a que tu as cr�� un objet sp�cifique).
    - En mettant un champ texte dans un clip, tu ajoutes un objet de type TextField dans un objet de type MovieClip.
    - L'objet ainsi obtenu n'est plus v�ritablement un MovieClip (qui normalement ne contient pas de TextField). L'objet obtenu est une extension de MovieClip, un nouveau type objet, qui ici est nomm� MC_Messages.
    - Le type d'objet MC_Messages est donc une extension de MovieClip, et contient une propri�t� sp�cifique nomm�e "txt_message" de type TextField.

    L'objet "mc" qui instancie le type MC_Messages n'est donc pas de type MovieClip, mais bien de type MC_Messages. Il faut alors �crire:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    var mc:MC_Messages = new MC_Messages();
    Evidemment, tu peux typer "mc" en MovieClip (ce que tu as fait), puisque MC_Messages est une extension de MovieClip. Mais � ce moment l�, si tu peux acc�der � toutes les propri�t�s de mc en tant que MovieClip, tu ne peux plus du tout acc�der aux propri�t�s de mc en tant que MC_Messages. Et donc tu as toujours acc�s aux propri�t�s comme "x", "y", ou � la m�thode getChildByName(), mais tu n'as pas plus acc�s � la propri�t� "txt_message".

    Pour l'exemple, tu pourrais m�me typer mc:Object, puisque MovieClip est une extension de Object, mais tu n'aurais plus acc�s � aucune propri�t�. Pas m�me "x" et "y".

    normalement, tu �cris tout simplement:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    var mc:MC_Messages = new MC_Messages();
    mc.txt_message.text = "Nouveau Texte";
    Ca devrait fonctionner.

  4. #4
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    40
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par d�faut
    Merci beaucoup pour vos r�ponses surtout David Buff pour tes explications qui m'ont permis de comprendre d'avantage ce syst�me. Et d�sol� de pas avoir pu r�pondre plut�t (vacances ).

    Par contre �a ne fonctionne toujours pas.... .

    Pour le texte j'ai bien sp�cifi� un "dynamic Text" les noms des propri�t�s sont correctes

    En gros ma classe c'est �a, il n'y a toujours pas d'erreur dans la console et le movie clip s'affiche bien mais toujours avec l'ancien texte. Pourtant quand je modifie x et y du MC_Messages �a fonctionne...


    Classe Main reli� � mon .fla
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Main extends MovieClip{
     
    <div style="margin-left:40px">public function Main():void {
     
    <div style="margin-left:40px">var d:MC_Messages = new MC_Messages();
    var tf:TextField = d.txt_message;
    tf.text = "new Text";
    d.x = 0;
    d.y = 100;
    addChild(d);	</div>}</div>}
    Je continue � chercher et j'attends vos r�ponses et id�es si vous en avez merci.

    Khrono

  5. #5
    Membre exp�riment�
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Par d�faut
    Ce dernier code est propre et para�t correcte...

    Je sugg�re de faire un trace:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    trace(tf);
    trace(tf.text);
    pour voir si la propri�t� est bien r�cup�r�e...

    Ne pourrais-tu pas t'�tre tromp� dans:
    - Le nom d'occurrence du TextField
    - Le document Flash est bien en AS3
    - Le TextField est bien dans le clip, et non pas dans un sous-clip dans le clip

    ... essaye de bouger non pas les coordonn�es x,y du clip, mais celles du TextField (tf.x) pour voir...

  6. #6
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    40
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par d�faut
    J'ai mis les trace et je r�cup�re bien le nouveau message. Ensuite je me suis m'y en debug et dans l'object mc j'ai bien la propri�t� txt_message avec MC_Messages comme parent et le texte est correcte.

    J'ai essay� de bouger le texte �a n'a rien fait.

    Pour �tre sur que le document soit bien en AS3 comment il faut faire ?


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Main extends MovieClip{
    <div style="margin-left:40px">public function Main():void {
     
    <div style="margin-left:40px">var mc:MC_Messages = new MC_Messages();
    var tf:TextField = mc.txt_message;
    trace(tf.text);
    tf.text = "Nouveau Texte";
    trace(tf.text);
    tf.y = 300;
    mc.x = 0;
    mc.y = 100;
    addChild(mc);	</div>}</div>}

    ps: je suis sur le tchat si ca int�resse

  7. #7
    Membre exp�riment�
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Par d�faut
    On va y arriver...

    Pour v�rifier que tu es bien en AS3:
    Fichier > param�tres de publication > onglet Flash > champ Version d'ActionScript

    Sinon, essaye plut�t:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    public function Main():void {
        var mc:MC_Messages = new MC_Messages();
        addChild(mc);
        trace(mc.txt_message);
        trace(mc.txt_message.text);
        mc.txt_message.text = "Nouveau Texte";
        trace(mc.txt_message.text);
    }
    et poste nous le r�sultat du trace...

  8. #8
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    40
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Par d�faut
    J'ai trouv� ^^. En fait �a venait de l'animation de mon movie clip, j'ai du faire une mauvaise manipulation je l'avais mis en frame par frame au lieu de faire une seule motion tween. Donc votre r�ponse �tait correcte vu que �a fonctionn� ^^.

    Merci beaucoup de ton aide David buff

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Modification d'un texte dans un bouton
    Par atlantis dans le forum ActionScript 3
    R�ponses: 3
    Dernier message: 01/04/2008, 14h05
  2. Modification intempestive de texte dans une cellule
    Par Gorfael dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 26/12/2007, 00h20
  3. modification des variables difine dans un movieclip
    Par 3adoula dans le forum Flash
    R�ponses: 1
    Dernier message: 21/08/2006, 18h19
  4. Modification d'un texte dans une fenetre "d'erreur"
    Par PAUL87 dans le forum Access
    R�ponses: 8
    Dernier message: 21/10/2005, 13h12
  5. Modification texte dans un fichier
    Par byloute dans le forum Shell et commandes GNU
    R�ponses: 9
    Dernier message: 04/10/2005, 15h34

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