begin process at 2012 05 27 15:12:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

nuée de lettres avec une interactivité sourie


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

nuée de lettres avec une interactivité sourie

mercredi 11 novembre 2009 à 15:08:08 | nuée de lettres avec une interactivité sourie

Froddu24

Bonjour a tous, c'est mon premier poste. Je suis étudiant dans le cadre d'un projet d'un site immersif, je cherche dans un premier dans a créer une nuée de lettres placée en aléatoire dans une zone définie. Au passage de la souris ces lettres s'éparpillent.
J'ai procédé de cette façon : j'ai créé ma nué de lettres avec une boucle "for", et j'ai fait un tableau "array" afin de créer l'aléatoir entre les lettres de l'alphabet.
Pour l'intéractivité, jai créer un clip ( un cercle alpha= 0 ) qui se place en fonction du placement de la sourie et une class tween afin que les lettres réagissent avec la sourie.
Voila le code:

var longueur_zone:Number;
var largeur_zone:Number;
var nombre_de_clips= 200;
import mx.transitions.Tween;
import mx.transitions.easing.*;

function placement() {
longueur_zone = 300+random(100);
largeur_zone = 200+random(100);

}

// -----------------------------------------------------------------------------------




for (i=1; i<nombre_de_clips; i++) {
// -----------------------------------------------------------------------------------


var conteneur= this.createEmptyMovieClip ( "conteneur"+i,i+nombre_de_clips);
var clip = conteneur.createTextField("text_"+i, i, random(500), random(300), 300, 100);
var alphabet:Array = new Array("a", "b", "c", "d", "e", "f", "g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
var couleur:Array = new Array("");
var dutext:String = alphabet[random(23)];
clip.text = dutext;
var my_fmt:TextFormat = new TextFormat();
//my_fmt.color = 0x000000;
my_txt.setTextFormat(my_fmt);
placement();
clip._x=longueur_zone;
clip._y=largeur_zone;
conteneur.cacheAsBitmap=true;

}


// -----------------------------------------------------------------------------------




onEnterFrame = function(){
souris._x=_xmouse;
souris._y=_ymouse;
for (j=1; j<nombre_de_clips; j++){
var clip_avec_texte =_root["conteneur"+j]
if (souris.hitTest( clip_avec_texte)) {
new Tween(clip_avec_texte, "_x", Strong.easeIn, clip_avec_texte._x, random(250), 1, true);
new Tween(clip_avec_texte, "_y", Strong.easeIn, clip_avec_texte._y, random(250), 1, true);
}
}

}




Le problème , c'est que c'est beaucoup trop lent !!!! de plus il n'y a que 200 lettres et je compté en mettre beaucoup plus <1000 !
Donc si vous avez une solutions pour omtimisé ce code ou pour obtenir le mème effet avec une autre solution !
Merci d'avance,
Frod
jeudi 12 novembre 2009 à 01:20:35 | Re : nuée de lettres avec une interactivité sourie

crackter

salut,

j'ai modifié quelques points de ton code et j'ai commenté :

Code ActionScript :
var longueur_zone:Number;
var largeur_zone:Number;
var nombre_de_clips = 1000;
import mx.transitions.Tween;
import mx.transitions.easing.*;

// Pas besoin de recréer un tableau à chaque fois dans la boucle for, tu peux le mettre ici
var alphabet:Array = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");

function placement() {
	longueur_zone = 300+random(100);
	largeur_zone = 200+random(100);

}

for (i=1; i<nombre_de_clips; i++) {
	var conteneur = this.createEmptyMovieClip("conteneur"+i, i+nombre_de_clips);
	var clip = conteneur.createTextField("text_"+i, i, random(500), random(300), 300, 100);
	//var dutext:String = alphabet[random(23)];
	// création de var inutile, ça prend des ressources pour rien
	clip.text = alphabet[Math.floor(Math.random()*25)]; // y'a 26 lettres dans l'alphabet hein ;)
	clip.autoSize=true; //pour que la zone de texte ai la taille du clip
	clip.selectable = false; // pour que le texte ne soit pas sélectionnable
	clip.textColor=Math.random()*0xFFFFFF;
	// tu ne fais rien de particulier sur le texte donc j'enlève le textformat
	// si tu veux le remettre met le en "globale" comme alphabet
	//var my_fmt:TextFormat = new TextFormat();
	//my_txt.setTextFormat(my_fmt);
	placement();
	clip._x = 300+random(100); // fonction+double affectation -> trop de ressources
	clip._y = 200+random(100); // si tu veux modifier simplement, fais une constante
	//conteneur.cacheAsBitmap = true;
	conteneur.useHandCursor=false; //pour que le curseur souris reste pareil
	conteneur.onRollOver = bougerLettre; // l'action à effectuer au survol
}


// -----------------------------------------------------------------------------------


function bougerLettre() {
	new Tween(this, "_x", Strong.easeOut, this._x, random(100)-50, .5, true);
	new Tween(this, "_y", Strong.easeOut, this._y, random(100)-50, .5, true);
}


/*onEnterFrame = function () {
	souris._x = _xmouse;
	souris._y = _ymouse;
	for (j=1; j<nombre_de_clips; j++) {
		var clip_avec_texte = _root["conteneur"+j];
		if (souris.hitTest(clip_avec_texte)) {
			new Tween(clip_avec_texte, "_x", Strong.easeIn, clip_avec_texte._x, random(250), 1, true);
			new Tween(clip_avec_texte, "_y", Strong.easeIn, clip_avec_texte._y, random(250), 1, true);
		}
	}
};*/



L'utilisation de l'enterFrame est certe plus précis pour pouvoir détecter au mieux la collision souris/clip, mais est dans ton cas (nombre de clip énorme) un bouffe ressource qu'on ne peut négliger. Donc on passe par quelque chose de moins gourmand, le onRollOver.
Si vraiment tu veux que tous les clips bougent au survol, il faudrait que tu paramètres tes coordonnées avec un objet Point, tu calcules les distances entre les clips et ta souris, cela prendra moins de ressources que le hitTest. Il te faudra aussi par exemple générer un "si le clip bouge, je teste rien" puisqu'il bouge, et "s'il est loin de la souris, je teste pas" etc etc etc, on peut en trouver plein pour optimiser.
lundi 16 novembre 2009 à 10:34:46 | Re : nuée de lettres avec une interactivité sourie

Froddu24

Merci beaucoup de la réponse c'est exactement ce qui me fallait !
Cordialement
Frod


Cette discussion est classée dans : var, clip, lettres, zone, random


Répondre à ce message

Sujets en rapport avec ce message

Random [ par lol7 ] Bonjour à tous,j'essaie d'utiliser la fonction "random" pour que Flash joue de manière aléatoire des images au sein d'un clip. Concrétement, j'ai un c setInterval [ par celbob ] Salut,Je cherche à utiliser setInterval, j'ai un peu de mal à adapter la forme générique à mon clip. Je voudrais que le clip soit joué à certains mome mc_clip.duplicateMovieClip ???? ehehh [ par mica1 ] Hoïbon ma question est simplej'aimerais duplikatouiller une clipouille mais bon le ptit problème c'est que ce petit clipouille contient des champs de loadvars() [ par snowteam ] j'ai un petit problème. sur me scene, j'ai un clip qui contient une image (n1) avec un texte dont la variable est nom1.dans l'action script de mon cli loadvars() [ par snowteam ] j'ai un petit problème. sur me scene, j'ai un clip qui contient une image (n1) avec un texte dont la variable est nom1.dans l'action script de mon cli nom de variable & variables [ par desstrain ] salut, 4h-10,je sui bloké sur un truc stupide mais je trouve pas nam = "_root.var_zone.nom"+i;=>_root.var_zone.nom1 a pour valeur "toto"mais le pb c duplicate + random + alpha [ par Blacknight91titi ] Salutvoila j'aimerai crée une petite anim sympa :je dispose d'un clip nomé "carre" et j'aimerai le dupliqué avec duplicate movie clip et que ces dupli un bouton dans un clip rollOver/rollOut [ par IndigoKod ] un bouton dans un clip rollOver/rollOut Bonjour à tous, Je suis débutant en action script et je bute sur un prob ; j'ai construit un menu de type c Pb de preload de site [ par ceramicord ] Bonjour, J'ai fait un site et je viens de vouloir changer mon preload. L'ancien était automatisé.J'ai donc réalisé un clip et j'ai tenter de charger Appel de var d'un txt dasn un movie clip [ par Burnside ] Je n'arrrive pas a faire apparaître une variable qui se trouve dans un txt dans un movie clip.Merci,Burnside


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales