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

  1. #1
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    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
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  2. #2
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    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 émérite 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
    Points : 2 338
    Points
    2 338
    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
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    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
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    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
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  6. #6
    Membre émérite 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
    Points : 2 338
    Points
    2 338
    Par défaut
    salut,
    même si ça marche le "_global" me parait bizarre...
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

  7. #7
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Citation Envoyé par dom_dev
    salut,
    même si ça marche le "_global" me parait bizarre...
    Pourquoi donc ??
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  8. #8
    Membre émérite 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
    Points : 2 338
    Points
    2 338
    Par défaut
    quand on cible de façon absolue on écrit plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    _root.pion.clip.onEnterFrame ...
    et la notion de _global est en principe à proscrire en alogorithmique (même si personnellement j'en abuse largement mais uniquement pour préfixer mes variables globales)

    bonne continuation.
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

  9. #9
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    Tant qu'a faire, évite aussi les _root C'est du ciblage absolu ! Utilise this et _parent

    @++
    Libzippp (C++)
    Lost in AStorm

  10. #10
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Merci de l'info, ça marche avec this

    Sinon, en quoi les globales sont chiantes sur un projet ou l 'on travaille seul ?
    JE pensais qu'il fallais les éviter pour ne pas interférer avec d'autres codeurs sur un même projet, non ?

    ++
    JC
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    pour la maintenabilité...
    un code spagetti est toujours plus dur a maintenir et a faire evoluer,
    et où si tu touche un truc tout explose...

  12. #12
    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
    Bonjour a tous.

    un code spagetti est toujours plus dur a maintenir et a faire evoluer,
    Je crois qu'un code spaghetti ce fait avec de la bolognaise. heuuu... avec des goto (en C) et des gotoAndPlay/Stop() en flash. =(

    Sinon, en quoi les globales sont chiantes sur un projet
    Si elle esxiste, c'est qu'elle on leur utilité.
    Je l'utilise comme ca moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _global domain="www.mondomain.com";
    PS: Si ca ca aide pas a la maintenabilité ....

  13. #13
    Membre émérite 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
    Points : 2 338
    Points
    2 338
    Par défaut
    salut à tous,

    Je crois qu'un code spaghetti ce fait avec de la bolognaise. heuuu... avec des goto (en C) et des gotoAndPlay/Stop() en flash. =(
    Là je ne suis pas du tout d'accords le gotoAndStop() de flash n'a pas grand chose à voir avec le goto en C, dans un algorithme. Le gotoAndStop() de flash "pilote" la tête de lecture de l'animation, ça ne pose pas de problème de cohérence à priori.
    j'execute une fonction si le retour vaut telle valeur je vais sur telle image sinon je vais sur telle autre, c'est très propre, ça ne pose pas de problème particulier.

    L'utilisation de _global est contraire au principe de la POO. Normalement les variables appelées attributs sont toutes associées à une classe d'objet et l'accés aux attributs se fait au travers "d' ascesseur" get et set qui permettent de définir des règles d'accès très précises.
    Même en travaillant seul sur une application, il ne faut pas oublier que la plupart du temps tu vas laisser de coté cette application et plusieurs mois après voir plusieurs années on va te demander de la reprendre pour l'améliorer et là les règles de programmation de qualité prennent tout leur sens.

    Enfin, celui qui applique les règles strictes de programmation imposées par le compilateur java, aura moins de problème s'il transpose ça dans flash. Ceci dit je fais un peu de java avec eclipse et c'est le bagne alors que flash je continue d'en faire le week end
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

+ 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, 20h43
  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, 11h19
  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, 16h54
  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, 19h39

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