bouton avec plusieurs cible

bouton avec plusieurs cible - Flash/ActionScript - Programmation

Marsh Posté le 14-09-2007 à 18:01:00    

bonjour
j'ai un petit probléme
 
j'ai mis sur une page un bouton que j'ai nommé "bouton" et l'occurence du bouton est aussi appellée bouton
 
j'ai un fichié xml :
 
<?xml version='1.0' encoding="UTF-8"?>
 
<icons>
 
<icon image="icon1.png" cible="fichier1.swf" />
 
<icon image="icon2.png" cible="fichier2.swf" />
 
<icon image="icon3.png" cible="fichier3.swf" />
 
</icons>
 
l'animation est la suivante : j'ai plusieurs images cote à cote qui se charge grâce au fichier xml, quand je clique sur une image celle-ci devient seule sur la fenétre et le bouton apparait alors  
 
ce que j'aimerais c'est que la cible de ce bouton soit fonction de l'image choisie
 
comment je peux faire cela?
 
merci d'avance

Reply

Marsh Posté le 14-09-2007 à 18:01:00   

Reply

Marsh Posté le 15-09-2007 à 05:23:29    

Tu peux nous montrer ton code AS ? Pour voir où tu en es ?


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 15-09-2007 à 17:56:15    

je vous le met :
 
il est super long mais ne fuyez pas je vais mettre les parties ou il faut y apporter une modif  :) (certains reconnaitrons le caroussel de gotoandlearn)
 

Code :
  1. import mx.utils.Delegate;
  2. import mx.transitions.Tween;
  3. import mx.transitions.easing.*;
  4. var numOfItems:Number;
  5. var radiusX:Number = 250;
  6. var radiusY:Number = 75;
  7. var centerX:Number = Stage.width/2;
  8. var centerY:Number = Stage.height/2;
  9. var speed:Number = 0.05;
  10. var perspective:Number = 90;
  11. var home:MovieClip = this;
  12. theText._alpha = 0;
  13. bouton._alpha = 0;
  14. info._alpha = 0;
  15. var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
  16. tooltip._alpha=0;
  17. var xml:XML = new XML();
  18. xml.ignoreWhite = true;
  19. xml.onLoad = function()
  20. {
  21. var nodes = this.firstChild.childNodes;
  22. numOfItems = nodes.length;
  23. for(var i=0;i<numOfItems;i++)
  24.      {
  25.  var t = home.attachMovie("item","item"+i,i+1);
  26.  t.angle = i * ((Math.PI*2)/numOfItems);
  27.  t.onEnterFrame = mover;
  28.  t.toolText = nodes[i].attributes.tooltip;
  29.  t.content = nodes[i].attributes.content;
  30.  t.movie = nodes[i].attributes.movie;
  31.  t.texte = nodes[i].attributes.texte;
  32.  t.icon.inner.loadMovie(nodes[i].attributes.image);
  33.  t.ref.inner.loadMovie(nodes[i].attributes.image);
  34.  t.icon.onRollOver = over;
  35.  t.icon.onRollOut = out;
  36.  t.icon.onRelease = released;
  37.      }
  38. }
  39. function over()
  40. {
  41. home.tooltip.tipText.text = this._parent.toolText;
  42. home.tooltip._x = this._parent._x;
  43. home.tooltip._y = this._parent._y - this._parent._height/2;
  44. home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
  45. home.tooltip._alpha = 100;
  46. }
  47. function out()
  48. {
  49. delete home.tooltip.onEnterFrame;
  50. home.tooltip._alpha = 0;
  51. }
  52. function released()
  53. {
  54.  info._visible = true;
  55.  bouton._alpha=100;
  56.  home.tooltip._alpha = 0;
  57.  for(var i=0;i<numOfItems;i++)
  58.  {
  59.   bouton.indice=i;
  60.   bouton.onRelease = function()
  61.     {
  62.     createEmptyMovieClip("conteneur",1);
  63.     loadMovie(nodes[i].attributes.movie,conteneur);
  64.    };
  65.   var t:MovieClip = home["item"+i];
  66.   t.xPos = t._x;
  67.   t.yPos = t._y;
  68.   t.theScale = t._xscale;
  69.   delete t.icon.onRollOver;
  70.      delete t.icon.onRollOut;
  71.      delete t.icon.onRelease;
  72.   delete t.onEnterFrame;
  73.   if(t != this._parent)
  74.   {
  75.    var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
  76.    var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
  77.    var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
  78.   }
  79.   else
  80.   {
  81.    var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,100,1,true);
  82.    var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,100,1,true);
  83.    var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,160,1,true);
  84.    var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,180,1,true);
  85.    var tw5:Tween = new Tween(theText,"_alpha",Strong.easeOut,0,100,1,true);
  86.    theText.text = t.content;
  87.    info.text = t.texte;
  88.    var s:Object = this;
  89.    tw.onMotionStopped = function()
  90.    {
  91.     s.onRelease = unReleased;
  92.    }
  93.   }
  94.  }
  95. }
  96. function unReleased()
  97. {
  98.  info._visible = false;
  99.  bouton._alpha=0;
  100.  delete this.onRelease;
  101.  var tw:Tween = new Tween(theText,"_alpha",Strong.easeOut,100,0,0.5,true);
  102.  for(var i=0;i<numOfItems;i++)
  103.  {
  104.   var t:MovieClip = home["item"+i];
  105.   if(t != this._parent)
  106.   {
  107.    var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,t.theScale,1,true);
  108.    var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,t.theScale,1,true);
  109.    var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true);
  110.   }
  111.   else
  112.   {
  113.    var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,100,t.theScale,1,true);
  114.    var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,100,t.theScale,1,true);
  115.    var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true);
  116.    var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true);
  117.    tw.onMotionStopped = function()
  118.    {
  119.     for(var i=0;i<numOfItems;i++)
  120.              {
  121.      var t:MovieClip = home["item"+i];
  122.      t.icon.onRollOver = Delegate.create(t.icon,over);
  123.         t.icon.onRollOut = Delegate.create(t.icon,out);
  124.            t.icon.onRelease = Delegate.create(t.icon,released);
  125.               t.onEnterFrame = mover;
  126.     }
  127.    }
  128.   }
  129.  }
  130. }
  131. function moveTip()
  132. {
  133.  home.tooltip._x = this._parent._x;
  134.  home.tooltip._y = this._parent._y - this._parent._height/2;
  135. }
  136. xml.load("icons.xml" );
  137. function mover()
  138. {
  139. this._x = Math.cos(this.angle) * radiusX + centerX;
  140. this._y = Math.sin(this.angle) * radiusY + centerY;
  141. var s:Number = (this._y -perspective) / (centerY+radiusY-perspective);
  142. this._xscale = this._yscale = s * 100;
  143. this.angle += this._parent.speed;
  144. this.swapDepths(Math.round(this._xscale) + 100);
  145. }
  146. this.onMouseMove = function()
  147. {
  148. speed = (this._xmouse-centerX)/2500;
  149. }


 
ce que moi j'ai rajouté donc au code de base :
 

Code :
  1. t.cible = nodes[i].attributes.cible;


 
j'ai mis un trace, pas d eprobléme il charge bien les différentes cibles
 
et voila ou je bloque
 

Code :
  1. for(var i=0;i<numOfItems;i++)
  2.  {
  3.   bouton.onRelease = function()
  4.     {
  5.     createEmptyMovieClip("conteneur",1);
  6.     loadMovie("cible",conteneur);
  7.    };
  8.   var t:MovieClip = home["item"+i];


 
je débute en actionscript alors soyez indulgent  :sweat:  
j'ai mis un trace et j'ai des "undefinded"
 
merci d'avance


Message édité par kedrix le 15-09-2007 à 17:57:26
Reply

Marsh Posté le 15-09-2007 à 20:01:20    

Si j'ai bien compris, tu devrais donner un id à ton bouton et créer une fonction pour ton action. Exemple grossier :
bouton.id = i ;
bouton.onRelease = function ()
{
show(this.id);
}
function show(foo){
// Ici grace à l'ID (foo) tu récupères ta cible que tu charges dans un clip, par exemple
}


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 15-09-2007 à 20:52:05    

salut
merci pour ta réponse
si je met un  
 

Code :
  1. trace(this.id);

aprés

Code :
  1. show(this.id)

il me met "6"  :(

Reply

Marsh Posté le 16-09-2007 à 06:29:14    

Il fait ça pour chaque bouton ? As-tu bien mis le code que je t'ai donné à l'interieur de la boucle ?


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 16-09-2007 à 11:15:42    

voila ce que j'ai fait :  
 

Code :
  1. for(var i=0;i<numOfItems;i++)     
  2.   {         
  3.          bouton.id = i ;
  4.          bouton.onRelease = function()   
  5.                   {                 
  6.                         show(this.id);
  7.                    }
  8.          function show(foo)
  9.                     {
  10.                      loadMovie("foo" ); 
  11.                     }         
  12. }   
  13.    var t:MovieClip = home["item"+i];


 
mais je pense que tu as du mal comprendre mon probléme
en fait j'ai un calque avec dessus le bouton mais il n'y a qu'un seul bouton
ce même bouton apparait pour chaque image visualisé
est-il possible de changer la cible du bouton en fonction de l'image cliquée qui est "item" ?
 
merci d'avance pour ton aide

Reply

Marsh Posté le 16-09-2007 à 12:14:54    

Ah ok !
Ben non. Si tu as un seul nom d'occurence, tu peux pas donner de cible différente. Normal.


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 16-09-2007 à 12:18:00    

ok, mince
 
comment faire alors pour faire apparaitre donc un seul bouton a chaque image cliquée mais que ce bouton soit différent selon l'image cliquée ?
 
j'avais essayé de faire ca mais je n'y étais pas arrivée peut étre qu'avec ton aide
 
merci d'avance

Reply

Marsh Posté le 16-09-2007 à 15:15:20    

ca y'est j'ai réussi a charger l'animation en fonction de l'image cliquée pour UN même bouton
 
mon probléme est que maintenant l'animation se charge en dessous de l'animation principale
 
ce que j'aimerais moi c'est qu'elle remplace complétement l'animation principale
 
voila ce que j'ai fait :
 

Code :
  1. createEmptyMovieClip("conteneur",1);
  2. conteneur.loadMovie(r);


 
merci d'avance

Reply

Marsh Posté le 16-09-2007 à 15:15:20   

Reply

Marsh Posté le 16-09-2007 à 20:46:58    

probléme résolu :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed