Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : aide sur caroussel et onRelease... [ Scripts / ActionScript ] (nicodogs)

jeudi 16 novembre 2006 à 11:22:01 | aide sur caroussel et onRelease...

nicodogs

Bonjour à tous,

Je suis en train d'étudier comment focntionne un caroussel en flash (la source vient de là: [ Lien ]

le truc, c'est que j'aimreais que lorsque j'appuie sur une icone, ce m'envoie sur une frame précise...
Je galère un peu pour l'écriture du code en fonction onRelease, si quelqu'un peut me filler un coup de main, ca serait sympa!

voici le code principal: (sorry, j'ai pas trouvé de manière "propre" pour coller mon code)


stop();

import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 300;
var radiusY:Number = 75;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 130;
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;
    }
}

function over()
{
    home.tooltip.tipText.text = this._parent.toolText;
    home.tooltip._x = this._parent._x;
    home.tooltip._y = this._parent._y - this._parent._height/2;
    home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
    home.tooltip._alpha = 100;
}

function out()
{
    delete home.tooltip.onEnterFrame;
    home.tooltip._alpha = 0;
}

function released()
{
    //c'est ici que je ne sais pas comment formuler (par ex: si j'appuie sur l'icone1 , aller a la frame2)

    gotoAndStop(2);


}

function moveTip()
{
    home.tooltip._x = this._parent._x;
    home.tooltip._y = this._parent._y - this._parent._height/2;
}

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;
}


si vous avez une idée,merci d'avance!

jeudi 16 novembre 2006 à 23:12:45 | Re : aide sur caroussel et onRelease...

Girou

Membre Club
Réponse acceptée !
Bonsoir,
ajout un numéro d'index a tes clips que tu peux récupérer dans ta fonction released et utiliser pour faire des if then

stop();

import mx.utils.Delegate;

var numOfItems:Number;
var radiusX:Number = 300;
var radiusY:Number = 75;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 130;
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.numIndex=i
        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;
    }
}

function over()
{
    home.tooltip.tipText.text = this._parent.toolText;
    home.tooltip._x = this._parent._x;
    home.tooltip._y = this._parent._y - this._parent._height/2;
    home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
    home.tooltip._alpha = 100;
}

function out()
{
    delete home.tooltip.onEnterFrame;
    home.tooltip._alpha = 0;
}

function released()
{
    //c'est ici que je ne sais pas comment formuler (par ex: si j'appuie sur l'icone1 , aller a la frame2) 
   trace("Icone "+this._parent.numIndex+" à été cliquée")
// ensuite tu fais des comparaisons
if( this._parent.numIndex==0){ gotoAndPlay(2)}  
if( this._parent.numIndex==1){ gotoAndPlay(20)} 
// voir aussi l'utilisation de switch case très utile si beaucoup de comparaisons

}

function moveTip()
{
    home.tooltip._x = this._parent._x;
    home.tooltip._y = this._parent._y - this._parent._height/2;
}

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;
}


@+

signature

vendredi 17 novembre 2006 à 02:11:51 | Re : aide sur caroussel et onRelease...

nicodogs

Exact, merci beaucoup! ca fonctionne parfaitement...
je vais me documenter sur ce que tu appelles "switch", pour l'instant, je n'ai pas beaucoup de comparaisons, mais ca peut servir!
merci encore!
bonne soirée Girou!

lundi 9 juin 2008 à 12:23:41 | Re : aide sur caroussel et onRelease...

seth1

Bonjour à tous et à toutes ! désolé de déterrer ce vieux post...
Je travaille actuellement (moi aussi !) sur cette source, mais sur la v3 (celle qui ouvre des menus de description)
Cependant, je cherche a créer la même fonction que onRelease, mais automatiquement, toutes les 10 sec. par exemple, pour présenter les différentes icônes même s'il n'y a pas intervention de l'utilisateur.

Mon problème est que je n'arrive pas à créer ce système d'automatisation de l'ouverture des descriptions. J'ai bien testé avec la fonction setIntervel(), mais bon...

Voilà mon code source :

import mx.utils.Delegate;
import mx.transitions.Tween;
import mx.transitions.easing.*;

var numOfItems:Number;
var radiusX:Number = 130;
var radiusY:Number = 20;
var centerX:Number = Stage.width / 2;
var centerY:Number = Stage.height / 2;
var speed:Number = 0.05;
var perspective:Number = 120;
var home:MovieClip = this;
theText._alpha = 0;

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.content = nodes[i].attributes.content;
        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;
    }
}

function over()
{
   
    home.tooltip.tipText.text = this._parent.toolText;
    home.tooltip._x = this._parent._x;
    home.tooltip._y = this._parent._y - this._parent._height/2;
    home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
    home.tooltip._alpha = 100;
}

function out()
{
    delete home.tooltip.onEnterFrame;
    home.tooltip._alpha = 0;
}

function released()
{
   
    home.tooltip._alpha = 0;
    for(var i=0;i<numOfItems;i++)
    {
        var t:MovieClip = home["item"+i];
        t.xPos = t._x;
        t.yPos = t._y;
        t.theScale = t._xscale;
        delete t.icon.onRollOver;
        delete t.icon.onRollOut;
        delete t.icon.onRelease;
        delete t.onEnterFrame;
        if(t != this._parent)
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
            var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
        }
        else
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,200,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,200,1,true);
            var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,50,1,true);
            var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,-10,1,true);
            var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true);
            theText.text = t.content;
            var s:Object = this;
            tw.onMotionStopped = function()
            {
                s.onRelease = unReleased;
            }
        }
    }
}

function released2() // fonction avec laquelle je souhaite ouvrir automatiquement les pages de description
{
   
    home.tooltip._alpha = 0;
    for(var i=0;i<numOfItems;i++)
    {
        var t:MovieClip = home["item"+i];
        t.xPos = t._x;
        t.yPos = t._y;
        t.theScale = t._xscale;
        delete t.icon;
       
       
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
            var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
       
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,200,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,200,1,true);
            var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,50,1,true);
            var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,-10,1,true);
            var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true);
            theText.text = t.content;
            var s:Object = this;
           

       
    }
}

setInterval(released2, 2000)

function unReleased()
{
   
    delete this.onRelease;
    var tw:Tween = new Tween(theText,"_alpha",Strong.easeOut,100,0,0.5,true);
    for(var i=0;i<numOfItems;i++)
    {
        var t:MovieClip = home["item"+i];
        if(t != this._parent)
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,t.theScale,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,t.theScale,1,true);
            var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true);
        }
        else
        {
            var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,200,t.theScale,1,true);
            var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,200,t.theScale,1,true);
            var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true);
            var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true);
            tw.onMotionStopped = function()
            {
                for(var i=0;i<numOfItems;i++)
                {
                    var t:MovieClip = home["item"+i];
                    t.icon.onRollOver = Delegate.create(t.icon,over);
                    t.icon.onRollOut = Delegate.create(t.icon,out);
                    t.icon.onRelease = Delegate.create(t.icon,released);
                    t.onEnterFrame = mover;
                }
            }
        }
    }
}


function moveTip()
{
    home.tooltip._x = this._parent._x;
    home.tooltip._y = this._parent._y - this._parent._height/2;
}

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;
}




et mon XML :

<icons>



<icon image="icon1.png" tooltip="pack1" content="blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla" />



<icon image="icon2.png" tooltip="pack2" content="blablablablablablablablablablablablablablablablablablablablablablablablablablablablablabl" />



<icon image="icon3.png" tooltip="pack3" content="blablablablablablablablablablablablablablablablablablablablablablablablablablablablabla" />



<icon image="icon4.png" tooltip="pack4" content="blablablablablablablablablablablablablablablablablablabla" />



<icon image="icon5.png" tooltip="pack5" content="blablablablablablablablablablablablablablablablablabl"/>



</icons>



Merci d'avance, si vous voyez comment faire...



Cette discussion est classé dans : var, number, parent, tooltip, home


Répondre à ce message

Sujets en rapport avec ce message

repositionné movieclip [ par nicodogs ] Bonjour à tous,Il y a quelques jours Girou m'avais donné un bon coup de main pour mon animation style "caroussel", l'anim marche très bien. Mais j'ai Liens xml et carrousel Flash [ par lucile266 ] Bonjour à tous,J'ai besoin d'un petit coup de main : Je n'arrive pas à mettre en relation mon fichier xml avec mon fichier flash dans le but de créer Créer dans une boucle des clips enfants de clip - createEmptyMovieClip attachMovie [ par zootallures ] Bonjour ,Je cherche à créer sous un MovieClip "contain" des occurences d'objets de ma bibliothèque ,le but est de pouvoir ensuite en supprimant le Mov Attacher plusieurs clips dans un même clip créé dans une classe [ par buzhug35 ] Bonjour, Mon idée était de créer une horloge par le biais d'une classe UneHorloge à partir de 2 Clips de classes différentes : UnDisque et UneAiguille Comment insérer plusieurs clips de classe dans un autre clip de classe [ par buzhug35 ] Bonjour, Mon idée était de créer une horloge par le biais d'une classe UneHorloge à partir de 2 Clips de classes différentes : UnDisque et UneAiguill Affichage dans boucle [ par CireEricCrie ] Bonjour;Je suis débutant et je demande une solution au problème suivant:Je cherche a afficher, quand on appuie sur un bouton, une suite de nombres dan Problème de variables qui ne changent pas d'état... [ par grover ] Bonjour à tous de la part du nouveau noob de service : moi. <span Aprentissage difficile des classes [ par szambaux ] Bonjour je suis en train de me former au classe est j'ai vraiment du mal donc je poste ce que j'ai fait, c'est une classe récupere le nom d'un fichier galerie photo qui ne s'arrête pas... [ par amandaaa ] Bonjour,j'ai un petit souci avec la galerie photo de mon site internet.je suis débutante en action script donc je vous remercie d'avance pour votre ai menu xml flash [ par marcof ] Bonjour à tous,J'ai réussi à créer un menu avec un sous menumais je n'arrive pas à mettre un sous menu sous  le sous menu :)Si quelqu'un pouvait m'aid


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,52 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.