Utilisation des boucles ?

Résolu
fanatikx Messages postés 46 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 4 juin 2010 - 29 févr. 2008 à 11:37
fanatikx Messages postés 46 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 4 juin 2010 - 7 mars 2008 à 10:53
Bonjour,

Voila, j'ai un petit soucis au niveau des boucles. Disons que j'ai 2 clip sur ma scène qui contiennent chacuns une image. Je veux que lorsque je survolle le clip en question, l'image grandit et que lorsque que je ne le survolle plus, qu'elle reprenne sa taille initiale (classique). J'ai donc fait ceci, en nommant mes deux clips img_1 et img_2 respectivement:

img_1.onRollOver=function()
{
    var mh:Tween = new Tween( img_1, "_height", Strong.easeOut.Elastic, img_1._height, 70, 5 );
    var mw:Tween = new Tween(img_1,"_width", Strong.easeOut.Elastic, img_1._width,70,5);
}
img_1.onRollOut=function()
{
    var mh:Tween = new Tween( img_1, "_height", Strong.easeOut.Elastic,img_1._height, 30, 5 );
    var mw:Tween = new Tween(img_1,"_width", Strong.easeOut.Elastic, img_1._width,30,5);
}

img_2.onRollOver=function()
{
    var mh:Tween = new Tween( img_2, "_height", Bounce.easeOut, img_2._height, 70, 5 );
    var mw:Tween = new Tween(img_2,"_width", Bounce.easeOut, img_2._width,70,5);
}
img_2.onRollOut=function()
{
    var mh:Tween = new Tween( img_2, "_height", Bounce.easeOut,img_2._height, 30, 5 );
    var mw:Tween = new Tween(img_2,"_width",Bounce.easeOut, img_2._width,30,5);
}

Bon ca sa marche nikel, mais j'ai une cinquantaine d'image et je me vois mal faire ca pour toutes alors je me demandais s'il n'y avait pas moyen d'utiliser une boucle ou un truc dans ce gout là

Voila

Merci d'avance

9 réponses

cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
29 févr. 2008 à 15:39
hello,
a controler dans la syntaxe parce que c'est de tête et je fais toujours des erreurs d'inatentions en tapant...

tu as essayé un truc comme ca voir si ca marche?

for (i=1; i<=50; i++) {

cheminjusquauclip["img_"+i].onRollOver = function () {
var mh:Tween = new Tween( this, "_height", Strong.easeOut.Elastic, this._height, 70, 5 );
var mw:Tween = new Tween(this,"_width", Strong.easeOut.Elastic, this._width,70,5);
}
cheminjusquauclip["img_"+i].onRollOut = function () {
var mh:Tween = new Tween( this, "_height", Strong.easeOut.Elastic,this._height, 30, 5 );
var mw:Tween = new Tween(this,"_width", Strong.easeOut.Elastic, this._width,30,5);
}
}
3
fanatikx Messages postés 46 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 4 juin 2010
29 févr. 2008 à 19:08
je pense que j'aurais pu, mais j'ai trouvé un autre moyen: créer carrément une fonction modifier taille en passant en parametre le nom de l'image en question. Ca me donne ca et a marche nikel!

function modifier_taille(clip)
{
    clip.onRollOver=function()
    {
        var t: Tween = new Tween(clip,"_height", Strong.easeOut,clip._height,60,5);
        var t: Tween = new Tween(clip,"_width",Strong.easeOut,clip._width,60,5);
        clip.swapDepths(0);
       
    }
    clip.onRollOut=function()
    {
        var t: Tween = new Tween(clip,"_height", Strong.easeOut,clip._height,30,5);
        var t: Tween = new Tween(clip,"_width",Strong.easeOut,clip._width,30,5);
    }
}

modifier_taille(img_1)
modifier_taille(img_2)
modifier_taille(img_3)
modifier_taille(...)

voili voilou, merci quand même pour ta réponse, je crois que je vais essayé avec une boucle for pour voir!

++
0
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
1 mars 2008 à 16:53
et à la fin tu ecris 50 fois modifier_taille(...)?

essaie quand même juste de noter un truc du genre voir si ca remplace tes 50 lignes de codes:

function modifier_taille(clip)
{
clip.onRollOver=function()
{
var t: Tween = new Tween(clip,"_height", Strong.easeOut,clip._height,60,5);
var t: Tween = new Tween(clip,"_width",Strong.easeOut,clip._width,60,5);
clip.swapDepths(0);

}
clip.onRollOut=function()
{
var t: Tween = new Tween(clip,"_height", Strong.easeOut,clip._height,30,5);
var t: Tween = new Tween(clip,"_width",Strong.easeOut,clip._width,30,5);
}
}

for (i=1; i<=50; i++) {
modifier_taille("img_"+i);
}
0
fanatikx Messages postés 46 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 4 juin 2010
2 mars 2008 à 13:39
En effet ce ne serait pas du luxe d'utiliser une boucle comme celle ci, mais je te présentes le pb dans son ensemble. Disons que j'ai trois images sur ma scène, chacune étant une photo d'un lieu. Je nomme donc ces 3 images selon le nom du lieu d'où elles proviennent. Ensuite, je mets en place  un classement qui permets de réorganiser les images selon 3 critères; le nom, la date et le theme abordé (ou thématique).

Je ne peux pas nommer mes images "img_1", "img_2",... car ma fonction nom prend le premier caractère du nom de mon image et la réorganise dans l'ordre alphabétique selon ce premier caractère. En fait, je veux que tout soit automatique, cad que lorsque l'on met une nouvelle image sur la scène, on a juste à la nommer et a appeler la fonction correspondante pour la réorganisation au lieu de devoir taper avec tween a chaque fois les coord d'arrivées.

Je ne sais pas si j'ai été très clair, mais en l'occurrence ma fonction nom rencontre des défauts:

function reorganiser_nom(img)
{
    var nom = img._name;
    premiere_lettre=nom.charAt(0);
    switch(premiere_lettre)
        {
            case "c":
            {
                var t:Tween = new Tween(img,"_x",Strong.easeOut,img._x,30,5);
                var t:Tween = new Tween(img,"_y",Strong.easeOut,img._y,330,5);   
            }
            break;

            case "l":
            {
            var t:Tween = new Tween(img,"_x",Strong.easeOut,img._x,180,5);
            var t:Tween = new Tween(img,"_y",Strong.easeOut,img._y,330,5);
            }
            break;
       
            case "m":
            {
            var t:Tween = new Tween(img,"_x",Strong.easeOut,img._x,330,5);
            var t:Tween = new Tween(img,"_y",Strong.easeOut,img._y,330,5);   
            }
            break;
        }
}

Comme tu peux le voir il suffit qu'il y est deux images qui portent un nom commencant par une même lettre pour qu'elles se superposent au lieu de se chevaucher. Je vais essayer des boucles mais comme je t'ai dit les noms des images n'ont pas une synthaxe identique.

Si t'as une idée, je serais heureux que tu la partages avec moi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
3 mars 2008 à 12:09
hello,
je n'ai pas testé mais en utilisant un tableau contenant le nom de toutes tes images, tu peux avoir des noms d'images différents, c'est-à-dire que tu peux les appeler n'importe comment. Ensuite tu peux appliquer la fonction à l'ensemble du tableau en un coup...

En plus, en regardant un peu la doc, j'ai vu l'option sort() qui permet de trier les éléments d'un tableau justement par ordre alphabetique, il y a donc peut-être moyen d'ecrire tous tes noms dans un tableau, et qu'automatiquement il te les mettent par ordre alphabetique... je crois que je vois à peu près comment faire, si tu veux je peux essayer un petit test chez moi dans le courant de la semaine... en attendant voici le lien à propos des tableau et de la fonction sort ()

http://wiki.mediabox.fr/documentation/flash/array/sort
0
fanatikx Messages postés 46 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 4 juin 2010
3 mars 2008 à 16:59
J'avais pas pensé au tableau! ja vais essayer de mon coté si tu fais le petit test se serait super sympa de me le faire parvenir! en tout cas merci beaucoup pour l'interet que tu portes à mon soucis!

je vais me renseigner sur les tableaux (je n'ai jamais travaillé avec) y a un début à tout :) ! et merci pour la fonction sort() je vais voir comment m'en servir
0
fanatikx Messages postés 46 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 4 juin 2010
5 mars 2008 à 09:42
Salut,

bon alors je me suis renseigné à propos des tableaux. A priori le type de tableau qu'il me faudrait  est un tableau multidirectionnel alors je me suis rensigné sur la doc flash et sur le web. J'ai essayé d'appeler du texte et des données String et pour ca pas de soucis mais imposible d'appeler des images et de les déplacer alors qu'elles sont dans le tableau. Je peux les déplacer mais seulement avec setProperty(nomDeMonImage, _x , 80) où 80 correspond à la destination sur l'axe des abscisses de mon image. J'ai remarqué que l'utilisation de cette fonction était déconseillée et de toute évidence mon image se déplace instantanément  et la fonction Tween ne fonctionne puisque trace(nomDeMonImage._x); renvoit "undefined" alors que trace(setProperty(...)) me renvoit les coordonnées entrées.

Pour tout te dire, je n'ai pas vraiment compris l'utilisation des tableaux, du moins celle virtuelle (j'ai du mal à me les imager). Pour indexé des textes ca ne me parait pas bien dure mais alors pour les images...

J'ai regardé la doc sur sort() mais ne comprenant pas encore la logique des tableaux, je pense que c'est l'étape suivante.

Enfin bon, je vais continuer à chercher mais j'avous que si tu avais un bon tuto sur les tableaux et en particulier sur ceux contenant des images ca me serait utile. J'hésite à créer un nouveau sujet sur le forum davantage orienté sur les tableaux mais j'ai peur de flooder et d'un peu trop insister sur un probleme qui dans l'absolu ne me parait pas bien compliqué. Après tout, il n'a fallu qu'a me dire "imbrication de clip" pour me débloquer completement sur flash, peut être y a t il aussi un mot magique pour les tableaux (qui sait...).

D'ailleurs, j'ai le parfait exemple du résultat que je compte obtenir. Il s'agit de Plot architecture et en particulier le site de BIG. Je ne sais pas s'ils se sont pris la tete avec des tableaux où s'ils ont fait un code de 500 lignes.Moi personnellement je préférerais un code léger et facilement optimisable...
0
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
6 mars 2008 à 12:58
oulah, j'ai ete regarder le site BIG et maintenant je vois parfaitement ou tu veux en venir... le problème c'est que c'est assez complexe et que je ne suis pas sûr d'avoir le niveau pour faire ca... Mais l'idée est interessante et je vais essayer de voir ce que je peux faire...

Par contre, n'hésite pas à faire un nouveau sujet qui ne parle plus de boucle, mais plutot de "tri de clip par orde alphabetique" ou un truc du genre, avec le lien du site comme exemple... parce que vu que tu as validé une de mes réponses, plus personnes ne va regarder ce post je pense... et je veux bien essayer de mon côté, mais je suis pas sûr de réussir et en plus je pars une semaine en vacances donc si tu es pressé...

voilà voilà, bon courage
++
0
fanatikx Messages postés 46 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 4 juin 2010
7 mars 2008 à 10:53
Non, ce n'est pas plus pressé que ca. Bon et bien Je vais créer un autre sujet  sur le tri!

Merci encore!
0
Rejoignez-nous