Arrêt du carrousel ou arrêt de fonction

Résolu
cash1 Messages postés 13 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 8 mars 2009 - 5 mars 2009 à 22:11
cash1 Messages postés 13 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 8 mars 2009 - 8 mars 2009 à 21:59
Bonjour à tous,
Voilà mon problème, j'ai trouvé le code source pour crée un carrousel effet 3D. Il fonctionne très bien mes images sont bien chargées, il tourne à la vitesse que je souhaite. J'ai copier le code sur l'image clé N°1. Le problème c'est que j'aimerais passer à l'image clé N°2 mais le carrousel ne s'arrête pas.

Que dois-je changer dans le code pour qu'il s'arrête? J'ai essayé de mettre un while mais ça me plante flash, j'ai essayé de mettre un if mais le carrousel ne tourne carrément plus. Merci d'avance!





var numOfItems:Number;
var radiusX:Number = 186;
var radiusY:Number = 20;
var centerX:Number = Stage.width/2;
var centerY:Number = Stage.height/2;
var speed:Number = 0.003;
var perspective:Number = 50;
var home:MovieClip = this;

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.icon.inner.loadMovie(nodes[i].attributes.image);
        t.ref.inner.loadMovie(nodes[i].attributes.image);
    }
}

xml.load("images.xml");

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

3 réponses

cash1 Messages postés 13 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 8 mars 2009
8 mars 2009 à 21:59
Bon j'ai réussi en fait c'est archi simple, pour l'arrêter il suffit de mettre la variable speed à zéro!

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

this.button.onRelease = function()
{
speed = 0;
gotoAndPlay (2);
}
3
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
6 mars 2009 à 08:51
hello,

essaie sa :

function mover()
{
   if(this._currentframe != 2){
         this._x = Math.cos(this.angle) * radiusX + centerX;   
         this._y = Math.sin(this.angle) * radiusY + centerY;
         var s:Number = this._y  / (centerY+radiusY);          this._xscale this._yscale s *100;
         this.angle += this._parent.speed;
         this.swapDepths(Math.round (this._xscale) + 100);
    }
}
0
cash1 Messages postés 13 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 8 mars 2009
6 mars 2009 à 17:19
Salut, merci pour ta réponse. Mais ça ne fonctionne toujours pas j'ai mis ça comme ça. Mais le carrousel tourne toujours...

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

this.button.onRelease = function()
{
gotoAndPlay (2);
}
0
Rejoignez-nous