craminus
Messages postés14Date d'inscriptionsamedi 13 décembre 2008StatutMembreDernière intervention20 décembre 2008
-
14 déc. 2008 à 11:44
soukainadinari -
30 avril 2013 à 11:58
Bonjour, je cherche à faire ceci:
___________________________
I Zone texte dynamique I
I I
I Bouton I
I__________________________I le contour étant un rectangle(couleur de fond,x,y,l,h en parametre)
Je sais faire cela sans trop de problème à la main.
Mais j'aurais besoin d'une cinquantaine de ses objets, pouvoir modifier le texte de la zone de texte, récuperer le clic, le survole du bouton, bouger à volonter l'ensemble et pouvoir le faire apparaitre et disparaitre à volonter. Bien sur pour chacun des 50 occurences créées
Je suis débutant en AS 2. Je pense qu'il faut créer une fonction mais je n'arrive à rien.
Merci de votre aide.
Skev
Messages postés255Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 9 janvier 20103 15 déc. 2008 à 17:46
Pour craminus, oui il est tout a fait possible de creer en serie des textfield, comme des clip d'ailleur à l'aide du boucle for.
Voici un exemple d'illustration :
//
texto = new Array("Text1", "Text2", "Text3", "Text4");
//
format = new TextFormat();
format.color = 0x000000;
//
for (i=0; i<texto.length; i++) {
this.createTextField("Text"+i, i, 10, 10+(20*i), 300, 20);
eval("Text"+i).text = texto[i];
eval("Text"+i).setTextFormat(format);
}
//
Skev
Messages postés255Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 9 janvier 20103 15 déc. 2008 à 01:11
Bonsoir,
Et bien tu peux créer un clip vide avec la fonction "createEmptyMovieClip",
Dessiner le rectangle a l'intérieur a l'aide des fonctions "moveTo" et "lineTo" pour le dessin, "beginFill()" et "endFill" pour le colorer, ou encore "lineStyle()" pour la couleur et epaisseur du contour.
Pour le bouton même méthode a l'exception que tu change la cible pour la creation du clip.
La zone de texte peut etre crée avec "createTextField()".
Le clic et le survole du bouton avec "onPress" et "onRollOver".
Si tu entend bouger a volonté par cliquer et maintenir pour bouger et stopper le mouvement au relachement du clic , utilise "startDrag()" associer a "onPress" et "stopDrag()" associer a "onRelease".
Pour la disparition sois tu joue sur la transparence avec la propriété "_alpha" sois tu utilise "_visible".
Pour finir "duplicateMovieClip" te permetra de dupliquer ton clip en plusieur occurence.
Voila tu n'as plus qu'as te renseigner sur tout ça et les regrouper dans une seul et meme fonction.
PS : si tu as besoin de plus de details ou exemples pour une des proprietes ou fonctions n'hesite pas a demandé. Tu peux egelement consulté les differentes sources mis a disposition ici.
craminus
Messages postés14Date d'inscriptionsamedi 13 décembre 2008StatutMembreDernière intervention20 décembre 2008 15 déc. 2008 à 17:11
Merci pour ta réponse skev, mais j'aurais voulu aussi savoir si on pouvais les créer toutes d'un coup avec un code du genre:
for(i=0;i<50;i++){
....
}
donc il me faudrais sans doute un tableau de TextField.
j'ai essayé texto = new Array(50);
puis dans la boucle texto[i] = createTextField(...); mais ca ne marche pas!
Pourrais tu me donner un exemple de code ou il y a un tableau de TextField par exemple.
Merci beaucoup et j'espere que je n'en demande pas trop!
(j'ai regardé pas mal de tuto, de code.. et je n'ai rien trouvé)
Skev
Messages postés255Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 9 janvier 20103 15 déc. 2008 à 17:32
En consultant l'aide de Flash on voit que l'on peut créer un rectangle en utilisant les fonctions que je t'ai décrites plus haut.
Voila ce que nous donne cette aide :
this.createEmptyMovieClip("square_mc", this.getNextHighestDepth());
//On creer un nouveau clip vide nommé "square_mc" qu'on place au plus haut niveau actuel de profondeur a l'aide de la fonction "this.getNextHighestDepth()"
square_mc.beginFill(0xFF0000);
//On commence le coloriage du clip (ici le code hexadecimal "FF0000" correspond au rouge vif
square_mc.moveTo(10, 10);
//On deplace le clip a 10 pixel en _x et en _y
square_mc.lineTo(100, 10);
On trace une ligne de l'origine a 100px en _x a 100px en _y
square_mc.lineTo(100, 100);
//Pareille mais de notre nouveau point a 100px pour _x et 100px pour _y
square_mc.lineTo(10, 100);
//etc ...
square_mc.lineTo(10, 10);
//etc ...
square_mc.endFill();
//Puis on arrete le coloriage
//
En placant ce code sur la premiere image de la scene tu obtiendra
un carré rouge de 100 pixel de coté.
Maintenant creons la fonction parametrable, nous l'appelerons "Create_Rect"
Pour creer une fonction tu as juste a ecrire :
//
mafonction = function (){
}
//
Tu veux rajouter des parametre? Et bien ecrit simplement :
//
mafonction = function (param1,param2,prama3....){
}
//
Adaptons maintenant a notre situation
Nous utiliseront ici 6 parametre : nom du clip ,position x, position y, hauteur, largeur, couleur
//
Create_Rect = function (nom,posx,posy,h,l,col){
}
//
Et pour le contenu nous utiliserons la methode utiliser precedemment soit :
//
Create_Rect = function (nom, posx, posy, h, l, col) {
this.createEmptyMovieClip("new_rect", this.getNextHighestDepth());
new_rect.beginFill("0x"+col);
new_rect.moveTo(posx, posy);
new_rect.lineTo(posx+l, posy);
new_rect.lineTo(posx+l, posy+h);
new_rect.lineTo(posx, posy+h);
new_rect.lineTo(posx, posy);
new_rect.endFill();
new_rect._name = nom;
};
//
Voila et pour appeler la fonction entre par exmple:
//
Create_Rect("monclip", 10, 15, 300, 100, 000000);
//
Pour creer un rectangle nommer "monclip" position a 10px en _x et 15px en _y, de 300px de largeur, 100px de heuteur et de couleur noir ("000000" correspond a la couleur noir)
En ce qui concerne les liens tu peux incorporer la fonction "onPress" dans ta fonction deja créée. Il te faudra egalement rajouter l'url en parametre exemple :
//
Create_Rect = function (nom, posx, posy, h, l, col, url) {
this.createEmptyMovieClip("new_rect", this.getNextHighestDepth());
new_rect.beginFill("0x"+col);
new_rect.moveTo(posx, posy);
new_rect.lineTo(posx+l, posy);
new_rect.lineTo(posx+l, posy+h);
new_rect.lineTo(posx, posy+h);
new_rect.lineTo(posx, posy);
new_rect.endFill();
//
new_rect.onPress = function() {
getURL(url, "_blank");
};
new_rect._name = nom;
};
//
craminus
Messages postés14Date d'inscriptionsamedi 13 décembre 2008StatutMembreDernière intervention20 décembre 2008 15 déc. 2008 à 17:42
Oui ta réponse est super claire et je t'en remerci beaucoup.
Mais je ne cromprends toujours pas comment définir la zone ou je vais mettre le texte dynamique.
Peut etre dans la function? Mais je croyais avoir lu qu'on ne pouvais pas mettre de texte dynamique dans un movieclip?
et enfin comment je fais pour changer son text si c'étais possible.
Je sais qu'avec un textField il suffit de faire nom._text = "blabla";
mais ici ce serait quoi le nom?
Pour un tableau de textField (juste cela) je n'y arrive pas non plus.
Mais en tout cas un grand merci pour tes 2 réponses rapides et précises.
craminus
Messages postés14Date d'inscriptionsamedi 13 décembre 2008StatutMembreDernière intervention20 décembre 2008 15 déc. 2008 à 19:35
oups j'ai encore un souci!
Ton code marche sur un calque précis mais pas partout!
je m'explique: je crée les textfield sur le calque 1:
format = new TextFormat();
format.color = 0x000000;
for (i=0; i<5; i++) {
this.createTextField("Text"+i, i, 10, 10+(20*i), 300, 20);
eval("Text"+i).setTextFormat(format);
}
j'ai un calque action script
for (i=0; i<5; i++) {
eval("Text"+i).text = "cou"+i;
}
rien ne se passe
Il faut sans doute que les variables soient globales?comment faire?
deuxieme question!!:
est ce possible de faire un tableau de tableau de textfield? genre 20 x 10
Skev
Messages postés255Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 9 janvier 20103 15 déc. 2008 à 19:55
Et bien je suis un peu étonné car chez moi le code fonctionne parfaitement, calque différent ou non. Tes calques, sont-il tout deux sur la scène?
Et pour ta seconde question, c'est tout a fait possible de faire un tableau avec des Textfield, d'ailleurs tu peux afficher les bordures des textfields comme ceci :
//
eval("Text"+i).border = true;
craminus
Messages postés14Date d'inscriptionsamedi 13 décembre 2008StatutMembreDernière intervention20 décembre 2008 15 déc. 2008 à 22:01
les tableaux dont je parlais c'étais un tableau de plusieurs dimension de textField:
genre:
text = new Array(20);
for(i=0;i<20;i++){
text[i] = new array(10);
for(j=0;j<10;j++){
text[i][j] = new textField(...) //mais ici je ne sais pas comment déclarer ce tableau à plusieurs dimensions
}}