Prob de profondeur des clips

Résolu
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007 - 7 nov. 2006 à 19:51
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007 - 25 nov. 2006 à 23:46
Helloooo,

J'ai un globe terrestre autour duquel je veux faire trajecter un logo, un peu façon IE... Ce logo doit laisser derrière lui une trainée.

Donc, j'ai un guide de mouvement que le logo suit. A cela j'y ajoute un pti script qui génère des clips pour simuler une trainée.

PROBLEME : Les clips dupliqués pour constituer la trainée sont d'une profondeur supérieur à celle du logo, ce qui donne l'effet d'une trainée que apparaît SUR le logo alors que je voudrais l'invese.

Voici le résultat foireux, et le fichier téléchargeable : http://e-clipx.ch/David/trainee.html

idée ??

Ah et tant que j'y suis, le logo avec sa trainée doit évidemment passer derrière le globe, du coup j'imagine modifier la profondeur de celui-ci à l'approche du logo. Et là je sèche à nouveau of course, car j'arrive pas à modifier correctement les profondeurs.

Merci à tous pour vos suggestions, j'arrive jamais à savoir suis je suis vraiment un boulets =) J'avoue, je pige rien à ces histoire de depth

17 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
8 nov. 2006 à 08:45
Bonjour,

une piste de reflexion...
Créer via script un clip unique qui contiendra toute l'animation(logo et trainée)
dans ce clip unique, créer (toujours par script) un clip qui contiendra la trainée.
ENSUITE créer un clip (par script) qui contiendra le logo et qui du coup sera AU-DESSUS de la trainée.
Pour le passage derrière la planète, avoir un masque en bibliotheque et, toujours par script l'affecter au clip unique contenant toute l'animation

En bref, avoir tout en bibliotheque
et par des createEmptyMovieClip()  + attachMovie() construire l'animation par script
via setMask, affecter un masque à l'animation

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
8 nov. 2006 à 13:16
Allons, pas de défaitisme...

premièrement dans ta bibliotheque, est-ce que tu as liaisonné tes clips ?
clip -> click bouton droit -> liaison -> cocher exporter pour actionscript
donner un nom de liaison pour pouvoir récupérer le clip via actionscript...

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
9 nov. 2006 à 22:49
Bonsoir,

comme promis, voici la source
et levisuel

Comme tu le constateras, le script est ...hem... un peu revu
C'est plutot de l'actionscript 2. tout le code est dans la frame 1

j'ai pas pu mettre la terre, elle était pas inclue dans la source... alors j'ai mis la planete bleue

Je suis pas vraiment d'accord pour mettre la source sur le site, car c'est encore vraiment 'brouillon' comme source, il y a surement moyen de mieux faire, mais là j'ai pas le temps de reprendre tout du début... cette source c'est du bricolage qui marche, rien de plus !

J'espère que ca te donneras pas de cauchemars !!!

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
25 nov. 2006 à 17:37
Salut,

c'est du à un problême de profondeur (ca t'étonne ?) tes étincelles sont à minimum 500 et tu swap ta planete en 400 ce qui résulte que les étincelles créées derrières la planête et pas encore effacées se retrouvent devant.

Bref, pour contourner ce problême remplace tout ton script de la frame 1 par celui ci

var mc:MovieClip = _root.createEmptyMovieClip("conteneur", 100);
mc._x = 250;
mc._y = 200;
mc.attachMovie("logo", "logo_inst", 5000);
mc.attachMovie("etincelle", "etincelle", 500,{_x:-500,_y:-500});
mc.attachMovie("planete","planete_inst",200,{_x:40});



i = 1;
mc.onEnterFrame = function() {
 if (i == 400) {
  i = 0;
 }
 var star:MovieClip = _root.conteneur.attachMovie("etincelle", "etincelle"+i, _root.NSD+i);
 star._x = _root.conteneur.logo_inst._x;
 star._y = _root.conteneur.logo_inst._y;
 star._xvitesse = Math.random()*15;
 star._yvitesse = Math.random()*4-3;
 star._alpha = 100;
 star.onEnterFrame = function() {
  this._yvitesse += 0.05;
  this._xvitesse = _xvitesse/1.5;
  this._x +=this._xvitesse;
  this._y += this._yvitesse;
  this._alpha -= 1;
  if (this._alpha<=0) {
   removeMovieClip(this);
  }
 };
 i++;
};



var coef = 0;
luneQuiTourne = function () {
 coef += 0.05;
 this._x = 40+Math.cos(coef)*230;
 this._y = 0+Math.sin(coef)*80;
 this._xscale =Math.sin(coef)*100;
 this._yscale =Math.sin(coef)*25+75;
 if (this._y<0) {
  conteneur.planete_inst.swapDepths(6000);
  conteneur.logo_inst.swapDepths(5000);
  _root.NSD=1
 } else {
  conteneur.planete_inst.swapDepths(400);
  conteneur.logo_inst.swapDepths(5000);
  _root.NSD=500
  



 }
};
conteneur.logo_inst.onEnterFrame = luneQuiTourne;


C'est testé et approuvé

@+
3

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

Posez votre question
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
25 nov. 2006 à 18:43
Salut,

remplace   _root.NSD=500  par   _root.NSD=7000 ça résoudra le probleme.

Par contre, c'est normal que ton processeur rame (un peu) -> tes étincelles fonctionnent avec de l'_alpha (donc redessiner ce qu'il y a derrière à chaque nouvelle frame) et de la transformation de couleur sur symbole... vu que tu à plusieurs dizaines d'étincelles qui bougent en même temps... c'est tout à fait normal que le processeur chauffe 

Chez moi le CPU est à 100 % d'utilisation durant ton animation... mais bon, c'est un P4 1.3 GHz... on fait mieux depuis au niveau puissance.

@+
3
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
8 nov. 2006 à 12:17
Merci pour ta réflexion !

Le coup de tout créer par script est effectivement une possibilité qui devrait résoudre mon problème. J'ai lu ça quelque part, mais le truc (plus grave) c'est que je n'ai jamais fais ça...

Du coup j'essaies des trucs et ca ne donne lamentablement...rien

// le conteneur
_root.createEmptyMovieClip("conteneur", 100);
// les etincelles pour la trainée
_root.conteneur.attachMovie("etincelle", "etincelle_mc", 1000);
// le logo qui tourne
_root.conteneur.attachMovie("logo_qui_tourne", "logo_qui_tourne_mc", 20000);

Rien que le gestionnaire de liaison je sais pas m'en servir.

Je crois que je vais laisser tomber, suis raisonnablement pas pret à entreprendre ce genre de travail, snif.
0
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
8 nov. 2006 à 15:21
absolument ! J'ai fais cela et ai decouvert les joies de ce gestionnaire. Par contre je ne savais pas quoi mettre comme identifiant, est-ce un problème que cela ait le même nom que le nom de l'occurence du clip que j'ai mis sur ma scène ?

Je veux dire :
 mon clip s'appelle "etincelle"
-> son identifiant de liaison : "etincelle"
-> son nom d'occurence sur ma scene : "etincelle"

merki
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
8 nov. 2006 à 15:42
Non, ca ne devrait pas poser de probleme...
Méfie toi du ciblage par contre... je penses à tes étincelles justement
Vérifie si il y a des scripts que les étincelles soient bien placées au bon endroit (clip conteneur -> clip étincelles) et pas sur le _root par exemple car sinon le masque fonctionnera pas.

@+
0
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
8 nov. 2006 à 16:23
Okay ca avance, c'est dingue...

J'ai donc réussi à créer cette histoire de conteneur avec ses des clips intégrés : logo et étincelles.

La blague est maintenant de réutiliser le script qui duplique mes étincelles, avec les bonne cibles & co.

//Ce qui marche
_root.createEmptyMovieClip("conteneur", 100);
_root.conteneur.attachMovie("etincelle", "etincelle", 1000);
_root.conteneur.attachMovie("logo_qui_tourne", "logo_qui_tourne", 5000);
conteneur._x=250;
conteneur._y=200;

// la suite c'est pas au point, d'ailleurs je sais pas très bien au placer ce script par rapport aux lignes précédentes ?

onEnterFrame = function() {
    if (i == 10000)
            {i = 0;}
   
    duplicateMovieClip(_root.conteneur.etincelle, "etincelle"+i, i+1);
    setProperty("conteneur.etincelle"+i, _x, conteneur.logo_qui_tourne._x);
    setProperty("conteneur.etincelle"+i, _y, conteneur.logo_qui_tourne._y);
    tellTarget(["etincelle"+i]) {
        _xvitesse=math.random()*12-6;
        _yvitesse=math.random()*10-6;
        _alpha=100;
    }
    i++;
   
};

je cherche...histoires de cibles évidemment

Le résultat : http://e-clipx.ch/David/trainee.html

merci Girou !
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
9 nov. 2006 à 09:16
Heu...

pour info, tu travailles avec quelle version de flash
parce que cela ressemble furieusement a du flash 4 ton script  !

Pour le reste, je me pencherai se soir sur ton fla...
@+
0
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
9 nov. 2006 à 10:34
pour le script, c'est du flash 6 !!!

hihi

Sinon moi j'ai le 8... sais pas comment tu vois ça mais c'est effectivement un peu oldschool. J'ai revé la moitié de la nuit à cette histoire de setmask, j'avais à la base besoin de ce script pour un client, mais comme ca avance quand même gentillement, j'ai maintenant surtout envie de le faire...pour moi =)

Et si ca aboutit à qqch de potable, je metterai la source sur ce site !

Super sympa girou

@@
0
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
10 nov. 2006 à 00:56
WOW !! Girou non d'un chien je suis....sur le q.

Milles merci et félicitation, c'est absolument...génial ! J'ai presque les larmes aux yeux

J'ai bricolé un peu tout ça , vala : http://e-clipx.ch/David/trainee.html

Je vois pas en quoi c'est brouillon tout ca, le coup des profondeurs c'est un peu freestyle, mais comment faire mieux ??

En fait ton "masque" est un clip positioné au-dessus du reste si je comprends bien. En y réfléchissant je crois que ca ne peut pas fonctionner comme cela, car au passage derrière la planète, du coté droit ca peut aller, mais à gauche c'est plus moyen. Bon si j'étire l' ellipse de guide de mouvement, je pense pouvoir m'en sortir avec cette solution. J'avais l'idée de modifier la profondeur du clip contenant la planète : une fois elle revouvre le logo, l'autre fois c'est l'inverse. Avec swapdepth truc machin.. arf.

En fin de compte tu m'a donné l'envie d'apprendre un peu correctement l'as2, vais acheter un bouquin !!

Merci encore
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
10 nov. 2006 à 08:49
Salut,

forcément tu dois étirer l'élipse... sinon ton logo percute la planète et c'est pas 'réaliste' du tout... et pour le masque, il suffit de remettre la planete 'découpée' et on y verra que du feu...


Pourquoi la source est pas clean...


Par exemple on pourrait aussi scripter le mouvement du logo, qui ne serait plus un guide de mouvement mais de la mathématique pur (plus facilement parametrable)
Le coups des profondeurs, on pourrait travailler avec des getNextHighestDepths().
Pourquoi 10000 copie des étincelles, ca semble énorme...
D'autre part, c'est pas vraiment réutilisable comme source... à part changer le logo ou la planète...

Voila pourquoi je dis que c'est pas vraiment une source utile a publier telle quelle

Ceci dit, si çà t'as donner envie de creuser l'AS2, c'est déla tout bénéfice !!!

P.S. oublie les telltarget ça date de Flash 3   et depuis Flash 5 on utilise plutot la notation de type point  this.clip._x .....

@+
0
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
24 nov. 2006 à 23:07
Salut, bon j'ai acheté un bouquin =).

Du coup j'ai repris le truc et commence à capter un peu.

look @ : http://www.e-clipx.ch/David/planete.html

J'ai réussi à jouer avec swapDepth pour faire passer le logo derrière la planète !! Pis le logo tourne selon une fonction math !
1) comme on le voit, au moment ou le logo réapparait de derrière la planete, la profondeur de la planete et du logo changent. Le prob c'est que la trainée du logo repasse par dessus... ce qui se voit ! Chais pas comment améliorer ca.
2) au bout d'un moment d'animation, le logo se barre !!! pas compris là.
3) j'ai l'impression que ca rame, mon proc monte de 15-20% pendant l'anim, ca vous parait normal ??

le fla : http://www.e-clipx.ch/David/planete.fla

2 semaines que je dors pas... je rigole =)

@@@@ dave
0
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
25 nov. 2006 à 18:01
Salut, une fois de plus tu déchire !


J'avais bien eu une idée dans ce genre là, mais savais pas comment m'y prendre pour la super feinte... J'ai remarqué un pti prob encore : la planète passe au dessus de la trainée au moment ou le logo va passer derrière la terre. J'ai modifié :
 
 conteneur.planete_inst.swapDepths(6000);
  conteneur.logo_inst.swapDepths(5000);
  _root.NSD=1

par :

 
conteneur.planete_inst.swapDepths(400);

  conteneur.logo_inst.swapDepths(1);

  _root.NSD=1

MAIS, au bout de qq tours de logo (8-10), la planète et le logo disparaissent !!!! Ca fait quelques versions que ca me fait ca =((

c'est ici
http://www.e-clipx.ch/David/planete.html
merci girou
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
25 nov. 2006 à 18:47
Ah oui,

ta planete qui disparait c'est lié a ton choix de profondeur en modifiant le script de mon pécédant post.
Reprend le script complet en changeant juste la valeur 500 et 7000 et adieux le problème de disparition

@+
0
RDave Messages postés 30 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 19 novembre 2007
25 nov. 2006 à 23:46
Great that works ! Je pige pas pourquoi mais bon on s'en fout.

Mon CPU est à 50% hihi, c'est un P4 2.8 GHz. Pile le double de puissance et pile la moitié d'utilisation, marrant.

Bon à peu de choses près, ce sripts est...parfait !!?

Vais-je en faire une source...

bonne'
0
Rejoignez-nous