Une action pour plusieurs occurences

nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009 - 9 avril 2007 à 14:57
nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009 - 10 avril 2007 à 12:37
Bonjour, j'ai un soucis. Sur mon scénario principal, j'ai une centaine de copies d'un clip "marg", dont les noms d'occurence sont tous "marg". J'ai cette action.


var mic:Microphone = Microphone.get();
this.attachAudio(mic);
this.onEnterFrame = function() {
    marg._xscale = marg._yscale=mic.activityLevel+Math.ceil(Math.random()*5);

Ce code fait grossir mon clip en fonction du volume d'entrée du micro. Bon, le soucis, c'est que ce code ne fonctionne que pour une seule copie du clip. Je sais que je pourrais mettre ce bout de code directement dans le clip "marg" ainsi ;




this.onEnterFrame = function() {

   this._xscale = this._yscale=mic.activityLevel+Math.ceil(Math.random()*5);

Mais en fait non... Je vous explique pourquoi, c'est en fait parce que le clip en question contient 5 images, si bien que la prise du son par le micro est raffraichie tout les 6ème de secondes (anim à 30im/sec), ce qui fait que j'ai un écho insupportable que je ne peux réduire même en faisant appel à la fonction setUseEchoSuppression(true);

Ce que je souhaiterais donc faire c'est éviter de taper un code du genre :

this.onEnterFrame = function() {
    marg0._xscale = marg0._yscale=mic.activityLevel+Math.ceil(Math.random()*5);
    marg1._xscale = marg1._yscale=mic.activityLevel+Math.ceil(Math.random()*5);
    marg2._xscale = marg2._yscale=mic.activityLevel+Math.ceil(Math.random()*5);
    marg3._xscale = marg3._yscale=mic.activityLevel+Math.ceil(Math.random()*5);
    marg4._xscale = marg4._yscale=mic.activityLevel+Math.ceil(Math.random()*5);
..................

Un truc bien chiant et qui ferai monter en flèche la conso du CPU
N'y aurait-il donc pas moyen de généraliser mon action à marg+"n" ou 0>n>100 ?
Merci à vous.

2 réponses

Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
10 avril 2007 à 11:27
Salut

En fait, tu voudrais quelque chose comme ça :

Code :
    this.onEnterFrame = function() {
        for(var numero :Number = 0; numero < nombreMaxi; numero++)
            this["marg" + numero ]._xscale = this["marg" + numero ]._yscale=mic.activityLevel+Math.ceil(Math.random()*5);
        }
    }
// Fin code

Une simple boucle for() devrait te suffir, non ?
Ne pas, bien évidemment, oublier de créer la variable nombreMaxi et lui attribuer une valeur.
De plus, il faut vérifier que le ciblage de tes clips est correct, enfin t'as compris l'idée

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
0
nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009
10 avril 2007 à 12:37
Voilà, ça me semble être ça, je vais tester, même si pour le coup j'ai déjà écrit mes 100 lignes, c'était un truc urgent...
Néanmoins, maintenant je saurais.
Merci à toi !
0
Rejoignez-nous