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 :

Création objet dynamique dans une boucle. [Correction de code]


Sujet :

ActionScript 3

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut Création objet dynamique dans une boucle. [Correction de code]
    Bonjour à tous et merci d'avance pour votre aide.

    J'aimerais créer différent shape à l'aide d'une boucle que voici.
    Aprés des heures de consultation passés sur les forum, je suis arrivée à ce code final qui ne semble toujours pas fonctionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for(var i:uint=0;i<10;i++) 
    {
    	var rectangle:Shape = new Shape();
    	rectangle.graphics.beginFill(0x0000FF);
    	rectangle.graphics.drawRect(0, 0, 60+(i*60), 85);
    	myMask.addChild(rectangle);
    	rectangle.name = "rectangle"+i;
     
    }
    Mais par la suite, il met impossible de faire par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rectangle1.height = 10;
    1120 : Accès à la propriété non définie rectangle1.
    Pour info myMask étant un Sprite dans le quel je place mes Shape.

    Merci encore.

  2. #2
    Membre régulier Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Points : 91
    Points
    91
    Par défaut
    Salut, normal tu n'as aucune var qui se nomme rectangle1

    Pour utiliser la propriété name faut utiliser getChildByName sur ton objet parent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myMask.getChildByName('rectangle1').height = 10;
    rien n’empêche un accès dynamique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myMask.getChildByName('rectangle'+i).height = 10;
    et en cas de difficulté d'accès tu peux cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Shape(myMask.getChildByName('rectangle'+i)).height = 10;

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Merci pour cette précieuse aide.

    Si tu me le permet, j'aimerais néanmoins demander ton avis sur le concept.
    Le code sur lequel tu as apporté ton aide, entre dans le cadre de la création d'un masque animé en mosaïque.

    Cela devrait ressembler à ceci:


    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
     
    var px:Number=0; // position x
    var py:Number=0; // position y
     
    for(var i:uint=0;i<96;i++) 
    {
    	var rectangle:Shape = new Shape(); 
    	rectangle.graphics.beginFill(0x0000FF);
    	//création des rows
    	if (i==16){ //ligne2
    		px=0;
    		py++;
    		}
    		else if(i==32){ //ligne3
    		px=0;
    		py++;
    		}
    		else if(i==48){ //ligne4
    		px=0;
    		py++;
    		}
    		else if(i==64){ //ligne5
    		px=0;
    		py++;
    		}
    		else if(i==80){ //ligne6
    		px=0;
    		py++;
    		}
    	rectangle.graphics.drawRect(0+(px*60), 0+(py*85), 60, 85);
    	px++;
    	myMask.addChild(rectangle);
    	rectangle.name = "rectangle"+i;
     
    }
    Ainsi j'ai crée 96 shape qui occupe toute la surface de l'image.
    Ensuite animé chaque rectangle comme ceci par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TweenLite.to(myMask.getChildByName('rectangle'+1), 8, {scaleX:0.0});
    TweenLite.to(myMask.getChildByName('rectangle'+2), 8, {scaleY:0.0});
    etc...
    Penses-tu que cette méthode de travaille soit bonne ?
    Merci encore

  4. #4
    Membre régulier Avatar de SnowStyle
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Points : 91
    Points
    91
    Par défaut
    Hmm, peut être que quelqu'un de plus avisé aurait une chose à redire, moi personnellement avec TweenLite, j'en connais pas de meilleure.
    Tu ne devrais pas avoir de soucis au niveau du fonctionnement

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Parfait. Et bien, je te remercie encore SnowStyle.
    Au plaisir,

  6. #6
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Bonjour,
    Citation Envoyé par Rifton007 Voir le message
    Penses-tu que cette méthode de travaille soit bonne ?
    oui c'est faisable facilement de cette manière.
    une essai que j'avais fais en AS2: demo fichiers

    sinon on peut aussi utiliser des frameworks pour faire ce genre d'animations:
    exemple hype

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 477
    Points : 198
    Points
    198
    Par défaut
    Et bien merci beekeep pour cette source et ces compléments d'informations.
    Elles me sont fortes utiles.

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

Discussions similaires

  1. Onrollover dynamique dans une boucle
    Par tet2brick dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/01/2008, 14h06
  2. Création d'instance dans une boucle ?
    Par stabe dans le forum C#
    Réponses: 15
    Dernier message: 03/01/2008, 16h48
  3. probleme de création de variable dans une boucle
    Par misterweb dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2007, 19h21
  4. [FLASH 8] Changer label bouton dynamiquement dans une boucle
    Par Malau dans le forum ActionScript 1 & ActionScript 2
    Réponses: 5
    Dernier message: 03/05/2006, 16h55
  5. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37

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