begin process at 2012 05 26 11:40:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Multimédia

 > 

3D

 > 

Bouton Sur un carrousel chargé dynamiquement


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

Bouton Sur un carrousel chargé dynamiquement

vendredi 2 septembre 2011 à 21:57:52 | Bouton Sur un carrousel chargé dynamiquement

Dylancozian

Bonjour ami flasheur 
Je viens vers vous car j'ai un problème avec un carrousel en flash.
Un ami m'a passé une source qu'il a récupérait sur internet pour son carrousel. 
Ce dernier se charge en XML. Jusque là tout va bien, tout marche.
Mais j'aimerais ajouter une fonctionnalité et malgré des jours de test je ne parviens pas a trouver comment faire.
Voilà, j'aimerais que pour chaque image qu'il y aura dans mon carrousel, qu'il y est un bouton qui se créer sur un coté de ma scène qui, lors ce que je cliquerais dessus, me ramènerais l'image correspondante au premier plan. Je ne sais pas si je m'exprime bien donc je vais le représenter par des petit dessin pour que se soit plus clair :).



Donc les boutons sur le côté n'aurons pas de style particulier. Je n'arrive pas à trouver comment faire cette fonction à partir du thème que l'on ma donné.... Auriez-vous des idées pour me guider ou des suggestions à m'apporter ou un exemple de source ?
Je vous laisse mon code là :

Code ActionScript :
//Auteur Céline Mornet @ 2008
//http://www.lutincapuche.com
//si ce script vous plait, vous pouvez cliquer sur les bannières adword en bas de mon blog, ca vous coute rien et ca me paye un café ! Merci :)

////////////////////////////////////////////////////////////////
//import de la classe external interface qui permet d'appeler un script externe
import flash.external.*;

//déclaration des variables
var numOfItems:Number;		
var clipLegende:MovieClip;	

//chargement du xml
function load_xml(path:String,type:String){
	var xml:XML = new XML();
	xml.ignoreWhite = true;
	xml.onLoad=function(){		
		var nodes = this.firstChild.childNodes;
		numOfItems = nodes.length;
		//je genere le caroussel quand tout est chargé.
		genereCarousel(nodes);	
	}
	xml.load("xml/"+path);		
}


function genereCarousel(nodes){
	
	level = hote_carousel_mc.getNextHighestDepth();	
	//creation de l'hote du carousel
	hote_carousel_mc.createEmptyMovieClip("carrousel",1);	
	clipHote = hote_carousel_mc["carrousel"];		
	//si l'option légende est coché a true, j'attache la légende sur la scene
	if(isLegende==true){
		hote_carousel_mc.attachMovie("legende_mc","legende_mc",2);		
		clipLegende= hote_carousel_mc["legende_mc"];		
		clipLegende._alpha=0
	}
	//je parcours tous les objets du xml, et jeleur attribut leur propriété
	for (var i=0;i<numOfItems;i++){						
		var myItem=clipHote.attachMovie("item","item"+i,i+1);		
		myItem.angle = i* ((Math.PI*2)/numOfItems);		
		myItem._y=Math.sin(myItem.angle)*radiusY +centerY;			
		var s:Number = (myItem._y - perspective)/(centerY + radiusY - perspective)
		myItem._xscale=myItem._yscale=s*50;
		myItem._x=Math.cos(myItem.angle)*150+centerX;									
		myItem.icon.inner.loadMovie(nodes[i].attributes.image);		
		//chargement de l'image dans icon.inner
		myItem.icon.onEnterFrame = function(){
			if(this.inner._width>2){
				//quand l'icone est chargé, je lui met la largeur fixe correspondant à la variable largeurIcons
				this.rapport = this.inner._width/this.inner._height;
				this.inner._width=largeurIcons;
				//puis je lui applique la hauteur proportionnelle
				this.inner._height=largeurIcons/this.rapport;
				//centrage du clip
				this._x=-this.inner._width/2
				this._y=-this.inner._height
				//tres important on kill l'enterFrame
				delete this.onEnterFrame;
			}
		}		
		myItem.icon.smoothing=true;			
		//on charge l'image dans son reflet
		myItem.ref.inner.loadMovie(nodes[i].attributes.image);
		myItem.ref.onEnterFrame = function(){
			if(this.inner._width>2){
				//quand l'image est chargé, on la met à la bonne dimension
				this.rapport = this.inner._width/this.inner._height;
				this.inner._width=largeurIcons;
				this.inner._height=largeurIcons/this.rapport;
				//on replace le reflet
				this._x=-this.inner._width/2
				this._y=this.inner._height;
				this._parent.masker._width = this.inner._width;
				this._parent.masker._height =hauteurReflet;
				this._parent.masker._x =-this.inner._width/2;				
				//tres important on kill l'enterFrame
				delete this.onEnterFrame;
			}
		}				
		myItem.swapDepths(Math.round(myItem._xscale) + 100 +i);	
		//j'applique la fonction mover a l'enterframe
		myItem.onEnterFrame = mover;		
		//j'associe les attributs lien,tooltips et grandeImage du xml au clip
		myItem.lien=nodes[i].attributes.lien;
		myItem.grandeImage=nodes[i].attributes.grandeImage;
		myItem.tooltip=nodes[i].attributes.tooltip;
		//action au clic qui ouvre le lien de celui ci
		myItem.onRelease = function(){						
			//si l'option lightbox ets active
			if(this.grandeImage!=undefined){				
				//j'arrete le carousel quand la ligthboox s'ouvre
				var my_timedProcess:Number = setTimeout(stopSpeed, 500);
				//j'appelle la fonction dans le js
				ExternalInterface.call("SWFDelegate", ""+this.grandeImage+"",""+this.tooltip+"");
			}else{
				//sinon je fais un lien classique dans une nouvelle fenetre
				//si le lien est renseigné. Sinon, je ne fais rien
				if(this.lien!=undefined){				
					getURL(this.lien,"_blank")
				}
			}
		}
		//si la légende est active, je l'affiche au rollOver
		myItem.onRollOver = function(){
			if(isLegende==true){
				afficheLegende(this)				
			}			
		}
		//si la légende est active, je la masque au rollOver
		myItem.onRollOut = function(){
			if(isLegende==true){
				masqueLegende(this)
			}			
		}
	}	
}


//rotation du caroussel
function mover(){		
	this.swapDepths(Math.round(this._xscale) + 100);				
	this._x=Math.cos(this.angle)* radiusX + centerX;
	this._y=Math.sin(this.angle)* radiusY + centerY;
	var s:Number = (this._y - perspective)/(centerY + radiusY- perspective);		
	this.s=s;
	this._xscale=this._yscale=s*100;		
	this.angle += nSpeed;		
}
//mise a jour de la vitesse du caroussel quand la souris bouge
this.onMouseMove = function(){
	nSpeed=(this._xmouse-centerX)/15000;
}

//fonction d'affichage de la légende
function afficheLegende(cible:MovieClip){	
	clipLegende.onEnterFrame = function(){
		if(this._alpha<100){
			this._alpha +=10;
		}		
		this._x = cible._x - this._width/2;
		this._y = cible._y - cible.s*100 * 3;		
		this.label_txt.text=cible.tooltip;
		this.label_txt.autoSize = true;
		this.bg_mc._width=this.label_txt._width+10;
		this.bg_mc._height=this.label_txt._height+10;		
	}
}

function masqueLegende(cible:MovieClip){	
	clipLegende.onEnterFrame = function(){
		if(this._alpha>0){
			this._alpha -=10;
		}else if(this._alpha==0){
			this._alpha =0;
			delete clipLegende.onEnterFrame
		}
	}	
}

function stopSpeed(){
	nSpeed=0;	
}
				
				
				
//je lance le chargement du xml
load_xml("icons.xml");

Code ActionScript :
//vars to edit
var wScene:Number = 800; 		//largeur du clip flash
var hScene:Number = 600;		//hauteur du clip
var radiusX:Number=300;			//rayon horizontal du carousel
var radiusY:Number=70;			//rayon vertical du carousel
var centerX:Number=wScene/2;	//centre horizontal du clip
var centerY:Number=hScene/2;	//centre vertical du clip
var nSpeed:Number=0.05;			//vitesse de rotation
var perspective:Number=70;		//perspective visuelle du carousel
var largeurIcons:Number=200;	//largeur des images à afficher dans le carousel
var hauteurReflet:Number=80;	//taille du reflet
var isLegende:Boolean=false;	//activation de l'affichage de la légende au rollOver, true ou false



Je vous remercie d'avance.
vendredi 2 septembre 2011 à 22:51:42 | Re : Bouton Sur un carrousel chargé dynamiquement

pegase31

Membre Club Administrateur CodeS-SourceS
Bonsoir, as-tu pensé à contacter l'auteur de cette source qui a justement laissé ses coordonnées dans la source à cet effet ?
Elle serait la plus apte à répondre à ta question, car la source est d'elle à la base ...

Peg'
samedi 3 septembre 2011 à 14:54:13 | Re : Bouton Sur un carrousel chargé dynamiquement

Dylancozian

Bonsoir, as-tu pensé à contacter l'auteur de cette source qui a justement laissé ses coordonnées dans la source à cet effet ?
Elle serait la plus apte à répondre à ta question, car la source est d'elle à la base ...

Peg'



Effectivement ta remarque était judicieuse :). Je lui est envoyé un mail. Si l'auteur peut m'aiguiller, je reviendrais sur le forum pour y partager ses conseils! On ne sais jamais ça servira peut être à quelqu'un d'autre :).
samedi 10 septembre 2011 à 17:50:46 | Re : Bouton Sur un carrousel chargé dynamiquement

Dylancozian

BOnjour, je reviens vers vous car je ne m'en suis toujours pas sorti. J'ai simplifié le code pour que les items soient en statique.. Donc je fais le carrousel en statique. Créer un bouton pour le l'associer à l'un de mes items. j'ai mis un trace dessous tout ce passe bien. Mais pour la fonction j'ai essayer plusieurs possibilité mais rien ne fonction.. Je veux juste que lors ce que je clique sur le bouton l'item associé viens se mettre au premier plan du carrousel... Voilà mon code
Code ActionScript :
var rotX:Number = 120;
var rotY:Number;
var Centre:Number = Stage.height/2;
var vitesse:Number = 0.4;
var sceneW:Number =Stage.width;
var sceneH:Number = Stage.height;
var nbI:Number=5;
var angle:Number=1;
var i:Number;
var marg:Number=05;


for(i=0;i<nbI;i++)
{
	//_____________________&#9675;&#9675;&#9675;---lier les clips à la scéne____
	this.attachMovie('Icone'+i,'Ic'+i,i);
	//_____________________&#9675;&#9675;&#9675;---clic sur les images____
	this['Ic'+i].onRelease=function(){
		trace (this);
		}
	//_____________________&#9675;&#9675;&#9675;---positionnement des clips au centre de la scéne____
	this['Ic'+i]._y = sceneH /2;
}

//_____________________&#9675;&#9675;&#9675;---rotation des clips____

onEnterFrame=function(){
	//_____________________&#9675;&#9675;&#9675;---Rayon de rotation de l'axe y (en pixels)
	rotY = ( Centre - this._ymouse );
	if (rotY <= -5) {
		rotY = -5
	}
	else if (rotY >= 50) {
		rotY = 50;
	}
	 //_____&#9675;&#9675;&#9675;---remise a zero de l'angle aprés tour complet
	 if (angle > (2*Math.PI))
	 {
		 angle = 0;
	 }else{			 
	 	for(i=0; i<nbI; i++){
			//_____________________&#9675;&#9675;&#9675;---rotation des clips sur l'axe x
			this['Ic'+i]._x=rotX*Math.cos(angle+2*Math.PI*i/nbI)+sceneW/2;
			//_____________________&#9675;&#9675;&#9675;---angle des clips sur l'axe y
			this['Ic'+i]._y=rotY*Math.sin(angle+2*Math.PI*i/nbI)+sceneH/2;
			//_____________________&#9675;&#9675;&#9675;---mise a jour de la taille du clip (60%->premier plan, 40%->arriere plan)
			this['Ic'+i]._xscale=60/2*(Math.sin(angle+2*Math.PI*i/nbI)+ 1)+50;
			this['Ic'+i]._yscale=this['Ic'+i]._xscale;
	
			//_____________________&#9675;&#9675;&#9675;---gestion de la profondeur (en pixels);
			this['Ic'+i].swapDepths(rotX*Math.sin(angle+2*Math.PI*i/nbI));
	 	}
		//_____________________&#9675;&#9675;&#9675;---Gestion de la rotation en fonction de la souris(x)
		if(this._xmouse < (sceneW/2+rotX+120) && this._xmouse > (sceneW/2-rotX-120))
		{
		//_____________________&#9675;&#9675;&#9675;---Gestion de la rotation en fonction de la souris(y)
			if(this._ymouse < sceneH && this._ymouse > 0)
			{
				//_____________________&#9675;&#9675;&#9675;---Gestion de la vitesse 
				angle=angle+(this._xmouse-sceneW/2)/sceneH*vitesse;
			}
		}if(_xmouse>Stage.width-marg || _xmouse<marg || _ymouse>Stage.height-marg || _ymouse<marg){vitesse= 0;}else{vitesse=0.4};
	 }
 }
 
 
 _root.btn1.onRelease=function(){
	
	this.IcO._x = Math.cos(0); 
	
	trace('maJoie');
 }



La dernière fonction
Code ActionScript :
 _root.btn1.onRelease=function(){
	
	this.IcO._x = Math.cos(0); 
	
	trace('maJoie');
est une des solutions auxquelles j'avais pensé. Il y avait aussi celle là
Code ActionScript :
 _root.btn1.onRelease=function(){
	
	this.IcO._x = sceneW /2;
this.Ic0._y = sceneH /2;
	
	trace('maJoie');


Lors ce que je trace "this.Ic0" et que je clique sur l'item auquel est associé Ic0 le trace s'effectue bien...

Pouvez-vous m'aider ?? Merci d'avance


Cette discussion est classée dans : function, var, xml, number, inner


Répondre à ce message

Sujets en rapport avec ce message

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 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 loadMovie (); et XML [ par Orange73 ] Yop les gens !Bon voilà, j'ai une anim principal dans laquelle je fais appel à un swf externe qui contient un AS permettant de faire un diaporama imag LocalConnect pas très bien compris [ par way2web ] Bonsoir,J'ai créé deux fichiers swf différents insérés dans la même page html :1) le premier est une galerie de miniatures2) le deuxième est les photo Gallerie Flash [ par theneoshaman ] Bonjours amis Flasheurs !Je suis en train de créer une gallerie dynamique en flash (mon dieu, que c'est original !) et j'ai un pb (sans déconner :p).. Problem de variable qui renvoi un NaN" dans un SlideShow [ par theneoshaman ] Amis Flasheurs...  Bonjours !Je suis en train de créer une petit flash où des images défilent mais ma première image ne revient pas derrière la derniè Lien sur image dans un diaporama flash ? [ par phobiahz ] Bonjour a tous !Voila j'ai le code d'un diaporama (fixe mais avec fondu entre les images) dont les images sont chargées dynamiquement a partir d'un fi diaporama avec importation aléatoire [ par JackNUMBER ] bonjour à tous !!j'ai trouvé 2 scripts que j'aimerai combiné.L'un sert à charger une image aléatoirement dans un MovieClip (qu'il créé) qui est conten 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 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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,218 sec (3)

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