Forums Développement Multimédia

Aller au contenu

Texture sur movieclip

CODE as3 fill

3 réponses à ce sujet

#1 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 25 November 2014 - 20:01 PM

Bonsoir.

Je me permets d'ouvrir une nouvelle section.

Si je fais trop de demande ça va paraître louche mais les modérateurs sauront me le faire savoir !

J'ai cherché toute l’après midi mais sans trouver.

J'ai un movie clip composé de 50 frame. ( différentes textures haute def )
Celui peut apparaître 6*13 c'est à dire 80 fois.

Tu m'étonne que ça rame ! ( et que ça plante )....
( vu sur un tuto de m. spi : c'est pas parce que c'est invisible que cela ne se goinfre pas de mémoire )

Donc : je voudrais tout simplement interchanger un clip par un autre, un visuel par un autre.

J'ai cherché. J'ai pas trouvé.

Si quelqu'un peut m'aider de nouveau.
( car j'ai eu beaucoup de coup de main dernièrement )....

Moi même ne veut pas vous parasiter et peut donner un coup de main sur photoshop / cinema 4D etc...

C'est Relou de lever la main.

hi hi hi....

D'avance merci.

Etienne.




PS :

Pour vous montrer que je travaille :


function BougeTraverse(event: TouchEvent): void {

        var CurentTrav: String = event.currentTarget.parent.name;
        var CurenttravNum: int = int(CurentTrav.charAt(2))

        var CurentSect: String = event.currentTarget.parent.parent.name;
        var CurentSectNum: int = int(CurentSect.charAt(5))

        VantailChoisiP = CurentSectNum;
        NumVantail.text = "Vantail " + String(VantailChoisiP);
        affichedim();


        if (Nombretrava[CurentSectNum] > 1 && (Htraverse[CurentSectNum][CurenttravNum - 1] > 100 || Htraverse[CurentSectNum][CurenttravNum] > 100)) {
                addEventListener(Event.ENTER_FRAME, tacketessai);
                DoigtSection.y = (PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.y) * PlaCoul.scaleY + PlaCoul.y;
                PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.TraverseVue.visible = true;
                //DoigtSection.x =  (PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.x) +30;
                DoigtSection.visible = true;


                DoigtSection.addEventListener(TouchEvent.TOUCH_BEGIN, Bouge5deb);
                DoigtSection.addEventListener(TouchEvent.TOUCH_END, Bouge5fin);

                var valmaxS: int = Htraverse[CurentSectNum][CurenttravNum - 1] + Htraverse[CurentSectNum][CurenttravNum] - 100;
                var malminS: int = 100 - valmaxS;
                var valtotS: int = Htraverse[CurentSectNum][CurenttravNum - 1] + Htraverse[CurentSectNum][CurenttravNum];

                ybase = (PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.y) * PlaCoul.scaleY + PlaCoul.y;
                ybasemin = ((Htraverse[CurentSectNum][CurenttravNum - 1] - 100) / 2 * PlaCoul.scaleY);
                ybasemax = ((Htraverse[CurentSectNum][CurenttravNum] - 100) / 2 * PlaCoul.scaleY);

                var RectancleTack5: Rectangle = new Rectangle(405, ybase - ybasemin, 0, ybasemin + ybasemax);
               
                function Bouge5deb(event: TouchEvent): void {
                        event.target.startTouchDrag(event.touchPointID, false, RectancleTack5);
                }
               
                function Bouge5fin(event: TouchEvent): void {
                        DoigtSection.visible = false;
                        PlaCoul["Vbase" + [CurentSectNum]]["VA" + CurenttravNum].TTRA.TraverseVue.visible = false;
                        event.target.stopTouchDrag(event.touchPointID);
                        removeEventListener(Event.ENTER_FRAME, tacketessai);
                }

                function tacketessai(e: Event): void {

                        var i5: int = ((valmaxS) + (malminS) * (DoigtSection.y - (ybase - ybasemin)) / (ybasemin + ybasemax));
                        Htraverse[CurentSectNum][CurenttravNum] = i5;
                        Htraverse[CurentSectNum][CurenttravNum - 1] = valtotS - Htraverse[CurentSectNum][CurenttravNum];
                        if (Vanteauxidentiques == 1) {
                                collerVV();
                        }
                        poseSection();
                }
               
        }
}


formule magique :


val min Y + ( Val max Y- Val min Y ) * ( .X - Xminrect ) / Xmaxrect

#2 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 26 November 2014 - 18:23 PM

Coucou Etienne, C'est Etienne !

- Ca va pas marcher ton truc, faut que t'utilise la classe Sprite.
- Ah bah comment on fait ?
- Ben t'as qu'à chercher.
- OK ! je te tiendrais au courant...
- Merci Etienne
- De rien Etienne.

#3 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6956 messages

Posté 26 November 2014 - 22:47 PM

Hello,

Citation

J'ai un movie clip composé de 50 frame. ( différentes textures haute def )

Oui mais bof, une seule feuille de sprites chargée et découpée dynamiquement pourrait certainement alléger les choses, mais va falloir le coder à base de loaders, de copypixels et compagnie... Cette solution va te permettre d'externaliser tes textures et donc les modifier sans recompiler, mais aussi de créer et de remplir tes objets (MovieClip ou Sprites) à la volée.

Citation

Celui peut apparaître 6*13 c'est à dire 80 fois.
Heu..... j'ai beau relire je capte pas :)

Citation

Donc : je voudrais tout simplement interchanger un clip par un autre, un visuel par un autre.
Du coup c'est pas clair pour moi....

Ce que je comprend : tu as besoin d'afficher X clips, chacun disposant d'une texture différente

A mon avis tu as deux solutions :

En POO, tu te base sur le principe des "particules" pour le concept de base : http://forums.mediab...iche_particules
Tu dois ajouter une classe qui charge une feuille de sprite, la découpe, et range le tout dans un tableau, puis tu t'en sert pour remplir tes "particules" (objets), tu peux t'aider de ça : http://forums.mediab.../fiche_rendus2d

L'autre manière c'est le procédural, c'est à dire le code à la timeline :
Dans ce cas, tu dois essayer de t'affranchir de la timeline, sers-toi de la bibliothèque pour stocker tes "objets", puis place ton code sur une seule frame (la seule disponible) de ton projet.

Dans les deux cas la logique serait :

1 - créer les textures : feuille de sprites externe ou objet avec une texture par frame
2 - générer les objets : soit par le code et dans ce cas il est facile de les gérer (voir exercice sur les particules), soit à la main sur la scène et tous doivent porter un nom (et être rangés dnas un tableau)
3 - modifier les paramètres des objets : si tu es parti sur la feuille de sprites il suffit de dessinner ta texture dans ton objet (voir doc de Flash à propos de la classe Bitmap et Copypixels), si tu es parti sur l'objet qui stocke les textures, chaque clip que tu crée doit "hériter" de cet objet de textures, puis il te suffit d'indiquer la frame à afficher.

#4 archiroc

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 255 messages

Posté 28 November 2014 - 20:14 PM

Merci M SPI.

Ca marche : plus de plantage !

YES !!!



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP