begin process at 2010 02 10 09:46:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

aide sur caroussel et onRelease...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

aide sur caroussel et onRelease...

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...
jeudi 16 octobre 2008 à 19:31:24 | Re : aide sur caroussel et onRelease...

MallaxOZ

Bonjour, moi j'ai un problème avec ce script. Tout se passe bien à part que les chiffres ne s'affichent pas quand j'en met dans le tooltip. Je ne vois aps qu'est-ce qu'il faudrait changer pour que ca marche.

Si quelqu'un peut m'aider, j'en peux plus de relire le même morceau de code


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


Répondre à ce message

Sujets en rapport avec ce message

Probleme carroussel avec xml [ par BBFUNK01 ] Salut à tous. Je suis en train de faire un carroussel en as2 dont les icônes sont gérées par un xml. Chaque icône du carroussel est cliquable et renv 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 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 Probleme de caracters speciaux dans flash [ par simojava ] bonjour tout le monde,J'ai codé une classe en AS qui charge tous les caracteres speciaux et les affiche dans un MovieClip.Le probleme est que certains Probleme d'affichage de certains cararcteres speciaux [ par simojava ] <img style="BORDER-LEFT-COLOR: black; BORDER-BOTTOM-COLOR: black; BORDER-TOP-COLOR: black; BORDER-RIGHT-COLOR: black; border-size: 1px" src="http://ww Problème d'undefined [ par Reno007 ] Bonjour à tous. Je désire pouvoir avoir accès au contenu de ma variable "contenuXMLFichier" en dehors de la fonction onLoad et j avais trouvé un cod generer un movie clip à partir de plusieurs jpg [ par fixeurman ] Bonjour , comment faire pour générer un mc à partir d' une liste de noms d'images ? (elles font toutes moins de 10ko) dois-je faire une boucle avec u Je suis vraiment débutant [ par faldo1 ] Coucou à tous,J'essaye d'utiliser ma première classe en Flash.J'ai donc une classe qui a le code suivant (je n'ai gardé que ce qui était nécessaire)== tableau deux dimentions [ par georgeconst ] salut a tous C'est la premiere fois que je participe a un forum alors si qqch cloche n'esitez pas a me le faire remarquer..j'ai un probleme avec actio Problème de onPress dans une boucle [ par Reno007 ] Bonjour à tous et toutes,Je débute en flash et j'ai un problème pour ma galerie de photos. J'affiche une photo et les miniatures.Le problème c'est que


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales