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 :

flash et POO


Sujet :

Flash

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut flash et POO
    Bonjour, j'ai un petit soucis de compréhension et j'attends votre aide !!!

    C'est un jeu de l'oie, 8 joueurs et donc 8 pions qui bougent (des clips), des cases interactives (boutons).

    Pour le moment, j'ai créé un clip qui représente mon pion, il s'appelle "pion_mc"
    et j'ai créé une classe joueur qui contient un clip, des coordonnées, un nom etc...


    je voudrais faire 8 instances de ma classe joueur avec tous le meme clip, je suppose que c'est possible avec attachMovie (pas encore testé).

    1) la boucle principale d'un clip est-elle "onClipEvent (enterFrame)" ? ou y en a t il d'autres?

    2) le contenu de onClipEvent de mon pion_mc se répercute-t-il sur toutes les instances de ce clip ?

    3) Pour attacher un clip de bibliothèque à un clip défini en variable dans une classe, comment fait-on ? c'est dans le constructeur de la classe ? c'est dans une fonction init ? Si oui, laquelle ?

    Merci d'avance...

    ++
    JC

  2. #2
    Membre éprouvé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Par défaut
    la 3eme question etant la plus interessante et la plus claire, c'est a elle que je repondrai:
    la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _root.attachMovie(a, b, c);
    a trois arguments comme tu peux le constater. Le 3eme etant l'indice de profondeur du calque auquel appartiendra le clip que tu attache depuis ta bibliothèque.
    Ce que je te conseil de faire c d'avoir au sein de ta classe un attribu idDepth disons, que tu instanciera au niveau du constructeur avec la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idDepth=_root.getNextHighestDepth();
    ce faisant, tu pourra a chaque instant avoir le lien entre ton instance (celle de ta classe) et le clip lui correspondant via cette fois la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _root.getInstanceAtDepth(idDepth)

  3. #3
    Membre Expert Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Par défaut
    bonsoir,
    pour apporter quelques infos supplémentaires :
    A partir d'un clip dans la bibliothèque tu peux en instancier autant que tu veux avec une instruction simple inclue dans un boucle "for".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(i=0;i<8;i++){
         this.attachMovie("pion_mc", "pion"+i, i, {_x:100, _y:100});
    }
    Il faut se rappeler que pour pouvoir utiliser l'instruction attacheMovie il faut au préalable avoir donner un identifiant de liaison. C'est à dire qu'il faut faire un clic droit sur le clip de la bibliothèque et choisir Liaison. Dans la fenêtre qui s'ouvre il faut cocher la case "Exporter pour action script". A ce moment automatiquement flash te propose comme nom de liaison celui du clip mais tu peux le changer dans ton cas c'est inutile et le nom de liaison sera "pion_mc". Dans le code ci dessus il va dupliquer 8 fois pion_mc en créant pion1, pion2 etc. Attention dans mon exemple ils sont tous placés en x et y égale 100 seul le dernier sera visible...

    Comme tu le vois j'ai utilisé une boucle classique "for". La boucle onEnterFrame est un peu particulière, la méthode onENterFrame est appelée à la cadence de l'animation, un exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    x=0;
    onEnterFrame = function(){
         mon_clip._x = x;
         x++;
         if(x>=100){
              delete this.onEnterFrame;
         }
    }
    bon courage

  4. #4
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    Merci, en fait le problème était la liaison, elle n'était pas active par défaut donc mes objets n'étaient pas crées !!

    Tant que j'y suis, est-il possible de surcharger la méthode "onClipEvent" d'un clip crée avec du code comme tu m'a montré.
    J'aimerais en fait ajouter à ma classe un bool anim qui lance une anim dans certains cas. Dans ce cas, ma méthode "onClipEvent" de chaque clip devient
    dans le cas d'une animation simple sur X (pour l'exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    onClipEvent (enterFrame) 
    {
    if (this.anim == 1) 
    {
      this._x += 5;
      if (this._x > _global.posX) this.anim=0;
    } 
    }
    Voilà, un truc de ce style, les variable anim et posX sont déterminées par un click souris. Des que je click, anim=1 et posX=mouse._x
    Le problème est que je n'ai pas accès à mon instance de pion car il n'est pas créé avec l'interface flash8 mais avec du code.

    Ma question est donc, puis-je surcharger ou redéfinir avec du code la méthode "onClipEvent (enterFrame)" ou ais-je accés à une main loop du style main en C pour animer à chaque frame mes pions...

    Merci et ++
    JC

  5. #5
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    Bon, j'ai trouvé tout seul comme un grand

    il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	_global.pion.clip.onEnterFrame = 
    		function ()
    		{ 
    		  trace ("chaque frame de mon clip");
    		};
    ++
    JC

  6. #6
    Membre Expert Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Par défaut
    salut,
    même si ça marche le "_global" me parait bizarre...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. flash 8-POO-php/ActionScript-liste de données
    Par argon dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 26/05/2009, 21h43
  2. [POO] Modifier les dimensions d'une scene flash en Javascript
    Par Peyothe dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/06/2008, 12h19
  3. [POO] Changer la source d'un objet (flash) en Javascript
    Par thomine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/02/2008, 17h54
  4. [POO] Rendre invisible un objet Flash en Javascript
    Par tafkap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/10/2004, 20h39

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