Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2011, 02h54   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 246
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 246
Points : 50
Points : 50
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 :
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 :
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.
Rifton007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 06h12   #2
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
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 :
1
2
 
myMask.getChildByName('rectangle1').height = 10;
rien n’empêche un accès dynamique :
Code :
1
2
 
myMask.getChildByName('rectangle'+i).height = 10;
et en cas de difficulté d'accès tu peux cast :
Code :
1
2
 
Shape(myMask.getChildByName('rectangle'+i)).height = 10;
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 15h04   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 246
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 246
Points : 50
Points : 50
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 :
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 :
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
Rifton007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 16h08   #4
Membre régulier
 
Avatar de SnowStyle
 
Homme
Développeur Web
Inscription : octobre 2005
Messages : 68
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2005
Messages : 68
Points : 73
Points : 73
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
SnowStyle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 16h44   #5
Membre du Club
 
Inscription : juillet 2006
Messages : 246
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 246
Points : 50
Points : 50
Parfait. Et bien, je te remercie encore SnowStyle.
Au plaisir,
Rifton007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 23h10   #6
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 604
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 604
Points : 2 233
Points : 2 233
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
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 23h48   #7
Membre du Club
 
Inscription : juillet 2006
Messages : 246
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 246
Points : 50
Points : 50
Et bien merci beekeep pour cette source et ces compléments d'informations.
Elles me sont fortes utiles.
Rifton007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h45.


 
 
 
 
Partenaires

Hébergement Web