Flash carrousel autour d'une image centrale

Résolu
cs_seb2905
Messages postés
14
Date d'inscription
jeudi 12 novembre 2009
Statut
Membre
Dernière intervention
15 février 2010
- 18 nov. 2009 à 15:32
gremlins7
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009
- 19 nov. 2009 à 16:19
Bonjour,

Comme le titre l'indique, je voudrais faire un carrousel flash qui tourne autour d'une image positionné au centre.
J'ai trouvé des sources pour le carrousel qui fait exactement ce que je veux (ou presque), en effet le carrousel en lui même c'est bon, le problème c'est plutôt mon image centrale qui est toujours en fond, je n'arrive pas à "l'incorporer" à l'intérieur du cercle : il faudrait que les images qui tournent passent derrière l'image centrale comme si elles tournaient autour d'un objet.
J'ai trouvé 2 codes que j'essaye de fusionner... sans résultat.
Quelqu'un aurait déjà rencontré ce genre de situation?

Merci de votre aide

code du carrousel (source : http://www.gotoandlearn.com/play?id=33) :
Code :

import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 300;
var radiusY:Number = 60;

var centerX:Number = Stage.width / 2.2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.1;
var perspective:Number = 100;
var home:MovieClip = this;

var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
tooltip._alpha = 0;

var xml:XML = new XML();
xml.ignoreWhite = true;

xml.onLoad = function()
{
var nodes = this.firstChild.childNodes;
numOfItems = nodes.length;
for(var i=0;i<numOfItems;i++)
{
var t = home.attachMovie("item","item"+i,i+1);
t.angle = i * ((Math.PI*2)/numOfItems);
t.onEnterFrame = mover;
t.toolText = nodes[i].attributes.tooltip;
t.icon.inner.loadMovie(nodes[i].attributes.image);
t.r.inner.loadMovie(nodes[i].attributes.image);
t.icon.onRollOver = over;
t.icon.onRollOut = out;
t.icon.onRelease = released;
}
}

xml.load("icons.xml");

function mover()
{
this._x = Math.cos(this.angle) * radiusX + centerX;
this._y = Math.sin(this.angle) * radiusY + centerY;
var s = (this._y - perspective) /(centerY+radiusY-perspective);
this._xscale this._yscale s*100;
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}

this.onMouseMove = function()
{
speed = (this._xmouse-centerX)/2500;
}


code de l'image qui tourne autour de l'autre (source : http://www.flashkod.com/codes/LOGO-T...ITE_40628.aspx) :
Code :
//créer un clip conteneur
var mc:MovieClip = _root.createEmptyMovieClip("conteneur", 100);
mc._x = 250;
mc._y = 200;
// y attacher le logo, les ptites étincelles et la planete
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 == 50) {
  i = 0;
 }
 //dupliquer les étincelles pour l'effet "trainée"
 var star:MovieClip = _root.conteneur.attachMovie("etincelle", "etincelle"+i, _root.NSD+i);
 //les faires suivre le logo
 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<=50) {
   removeMovieClip(this);
  }
 };
 i++;
};
// fonction pour créer la trajectoire du logo
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;
 // là on change les profondeur du logo et des étincelles pour qu'ils aient 
 //l'air de passer derrière la planète
 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=7000;
  

 }
};
conteneur.logo_inst.onEnterFrame = luneQuiTourne;
A voir également:

9 réponses

gremlins7
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009

18 nov. 2009 à 16:52
Salut,
tiens c'est curieux le premier code que tu poste ressemble étrangement au miens (que tu peux trouver sur ce site)...Ca y ressemble tellement qu'il y a anguille sous roche comme on dit...

Pour ton pb la solution est simple si tu utilise le premier code : tu place ton image au milieu avec un swapdeth de zero et le tour est joué. D'ailleurs si tu regarde ma source et les posts associés tu y trouvera la même réponse en plus detaillé.

A+
3
cs_seb2905
Messages postés
14
Date d'inscription
jeudi 12 novembre 2009
Statut
Membre
Dernière intervention
15 février 2010

19 nov. 2009 à 09:52
Merci pour ta réponse Gremlins,
Par contre je n'y suis pas arrivé
Voici ce que j'ai fais :
- j'ai créé un nouveau layer nommé "image" ou j'ai mis mon image au centre
- clic droit : convertir en symbole, en MovieClip nommé "tete"
-j'ai mis en : "tete"
- F9 puis j'ai rentrer le code suivant : tete.swapDepths(0);

Quand je teste, ça ne marche pas.

J'ai regardé tes posts mais je n'ai pas trouvé ta réponse plus détaillée (http://www.flashkod.com/codes/MENU-CARROUSSEL-3D_46489.aspx)
Pour ce qui est du code, je sais pas, je l'ai trouvé sur le site gotoandlearn car il y a un tuto vidéo (en anglais)
Pour ce qui est du flash je suis plus que novice, je n'ai jamais pris de cours et j'essaye d'apprendre par moi même.

En tout cas merci pour ton aide!
3
gremlins7
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009

19 nov. 2009 à 09:59
Re,
bien non, il faut le mettre dans le même layer il faut le placer dans la biliotheque de clip puis le rajouter par code rajouter en utilisant attachMovie sur la variable t.
Et le code swapDepths(0); est à integrer au code que tu as déjà mis en place.
A+
3
cs_seb2905
Messages postés
14
Date d'inscription
jeudi 12 novembre 2009
Statut
Membre
Dernière intervention
15 février 2010

19 nov. 2009 à 11:02
... ok...
Et en code ça donne quoi?

(va falloir que je prenne des cours sur les bases je crois...^^')

Si je récapitule... la fonction attachMovie je le met dans le code de l'image et le swapDepths dans le code principal..?!
0

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

Posez votre question
gremlins7
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009

19 nov. 2009 à 11:16
rrr non !!!!
bien, le conseil que je te donne c'est d'essayer de bien comprendre comment fonctionne le code que tu utilise. Il est manifeste que tu ne maîtrise pas les bases. Au regard de ça, je ne peut pas t'aider car quelque soit ce que je peux t'expliquer tu ne comprendrai pas ! (c'est pas péjoratif). Donc essaye de te renseigner sur attachMovie avec google.

Je t'ai donné la solution, mais tu n'as pas encore assez de recul pour la comprendre, donc je ne peux te souhaiter que bon courage.

A+
0
cs_seb2905
Messages postés
14
Date d'inscription
jeudi 12 novembre 2009
Statut
Membre
Dernière intervention
15 février 2010

19 nov. 2009 à 11:41
T'es dur prof!
Bon reste plus qu'a me casser les dents dessus et trouver...
C'est assez frustrant d'être près du but et de rien pouvoir faire!!!
J'te tiendrais au courant!

Merci
0
cs_seb2905
Messages postés
14
Date d'inscription
jeudi 12 novembre 2009
Statut
Membre
Dernière intervention
15 février 2010

19 nov. 2009 à 15:10
Après un bon repas ça va mieux!
Bon, je n'ai pas mis l'image sur la scène comme précédemment. J'ai fais clic droit sur le MovieClip nommé "tete" dans la bibliothèque : et j'ai mis "tete" en identifiant dans les propriétés de liaison.
Ceci fait, j'ai rentré le code suivant dans ma page de code principale :
var t = attachMovie("tete", "tete" + depth, 199);
tete.swapDepths(0);

Le test est comment dire... mitigé! Oui les objets qui tournent passent devant l'image centrale, mais pas assez tôt... Je suppose que c'est mon "199" sorti de nul part qui en ai la cause. J'ai mis 199 par tâtonnement, j'ai vu que quand je mettais "0" rien ne se passait, quand je mettais 3000, les images tournaient derrière l'image centrale, et de fil en aiguille je suis arrivé au seuil critique qu'est "199", le problème c'est qu'avec des chiffres après la virgule on arrive à rien... Faut trouver la bonne formule je pense...
J'ai l'impression que je suis sur la bonne voie puisque l'image arrive à être tantôt au dessus tantôt au dessous... C'est juste une question de "timing"...
grrrrr...
0
cs_seb2905
Messages postés
14
Date d'inscription
jeudi 12 novembre 2009
Statut
Membre
Dernière intervention
15 février 2010

19 nov. 2009 à 15:17
Bwahahaha! Je dis des conneries! J'ai mal fais ma recherche de seuil critique!!! Ça y'est libération!!! J'ai enfin trouvé!!!
En tout cas un grand merci à toi prof Gremlins qui m'a bien fait galérer mais surtout qui m'a bien aider!!!
0
gremlins7
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009

19 nov. 2009 à 16:19
Re,
c'est probablement à cause de la ligne :
var perspective:Number = 100;

je sais pas trop comme ça mais à mon avis le "zero réel" de l'anim n'est pas à zero, c'est à dire que l'anim n'est pas centré en profondeur (axe de profondeur z) mais il serait a priori autour de 100; essaye de regler le swapDEATH à autre chose que zero.

A+

PS1: ca n'a rien à voir avec le 199
PS2: ben oui on est la pour amener les gens a trouver tout seul, pas a leur fournir le truc tout cuit. Tu est un des rares qui a réussi car tu na pas lacher le morceau, félicitations.
0