Problèm pour appliquer des actions sur des clips dupliqués avec attachMovie

cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009 - 14 sept. 2007 à 09:21
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009 - 14 sept. 2007 à 12:31
Bonjour à
tous,

J'ai besoin de créer un slider (plusieurs images miniatures qui
défilent à droite ou à gauche selon la position de la souris),

J'ai
effectuer cette opération via attachMovie, voici le code :

_root.largeur
= "0";







for (var n
= 1; n < 14; n++) {







_root.slider.attachMovie("bouton_miniature", "clip"+n,
this.getNextHighestDepth());
 
var loadListener:Object = new
Object();
loadListener.onLoadInit = function(target_mc:MovieClip,
httpStatus:Number):Void {
 
 if (n == 1) {
    _root.largeur =
target_mc._width;
    target_mc._x= 0;
}
 else {
  target_mc._x= 
Number(_root.largeur);
   _root.largeur = Number(_root.largeur) +
target_mc._width + 10;
  
}
}







this["clip"+n].numero = n;










var
mcLoader:MovieClipLoader = new
MovieClipLoader();
mcLoader.addListener(loadListener);
mcLoader.loadClip("icones_scrollers/beauty/serie_3/beauty_scroll_"+n+".jpg",
this["clip"+n]);
}









Tout
fonctionne bien, mon clip slider où sont dupliquées mes petites
miniatures défile correctement je vous passe les détails du code qui fait slider
le clip car je pense que mon problème ne viens pas de là. Toutefois si quelqu'un
est intéressé qu'il me demande je me ferais un plaisir de partager mon modeste
bout d'action script.

Mon problème vient du fait que je n'arrive pas à
appliquer d'actions aux miniatures dupliquées dans le clip slider.
J'aimerais
que lorsque l'on clique sur une miniature, celle ci charge dans un clip sur la
scène principale, l'image en grand.

Pour cela j'ai essayé 2 solutions
:

-  l'une est de mettre sur la première image du clip dupliqué
"bouton_miniature" présent dans la bibliothèque (avec les paramètres
d'exportation) :

 this.onRelease = function () {
  _root.essais.text =
"ok";
 }

Juste pour tester, bien évidement rien ne s'affiche dans la
zone de texte essais.

- Autre solution rajouter cette ligne dans la
boucle :

_root.slider.this["clip"+n].onRelease = function () {
 
_root.essais.text = "ok";
 }

De cette façon :

_root.largeur =
"0";







for (var n
= 1; n < 14; n++) {







_root.slider.attachMovie("bouton_miniature", "clip"+n,
this.getNextHighestDepth());
 
var loadListener:Object = new
Object();
loadListener.onLoadInit = function(target_mc:MovieClip,
httpStatus:Number):Void {
 
 if (n == 1) {
    _root.largeur =
target_mc._width;
    target_mc._x= 0;
}
 else {
  target_mc._x= 
Number(_root.largeur);
   _root.largeur = Number(_root.largeur) +
target_mc._width + 10;
  
}
}








this["clip"+n].numero = n;













_root.slider.this["clip"+n].onRelease =
function () {









  _root.essais.text =
"ok";




 }










var
mcLoader:MovieClipLoader = new
MovieClipLoader();
mcLoader.addListener(loadListener);
mcLoader.loadClip("icones_scrollers/beauty/serie_3/beauty_scroll_"+n+".jpg",
this["clip"+n]);
}









Bien
évidement (sinon je ne vous aurais pas sollicité) "ok" ne s'affiche pas non plus
dans mon _root.text.

Merci d'avance à l'âme charitable qui se penchera 5
minutes sur mon problème.

9 réponses

cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
14 sept. 2007 à 09:25
J'ajoute que sur lorsque je passe sur les clips le pointeur ne change pas, peut-être cela viens t'il d'un problème de ciblage ?
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
14 sept. 2007 à 09:30
Salut,

plus que probablement il s'agit bien d'un probleme de ciblage.

Dans : _root.slider.this["clip"+n].onRelease = function () {  le this est de trop

essaye comme ceci :

_root.slider["clip"+n].onRelease = function () {

@+
0
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
14 sept. 2007 à 09:39
Merci,

Pas plus de succès en faisant comme çà.
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
14 sept. 2007 à 11:00
En fait, je pense que l'action onRelease est écrasée par le chargement du clip.

la définition du onRelease devrait se faire dans le loadListener.onLoadInit

du style

loadListener.onLoadInit = function(target_mc:MovieClip, httpStatus:Number):Void { 
if (n == 1) {
    _root.largeur = target_mc._width;
    target_mc._x= 0;
} else {
  target_mc._x=  Number(_root.largeur);
   _root.largeur = Number(_root.largeur) + target_mc._width + 10;
}
target_mc.onRelease=function(){

 _root.essais.text = "ok";
}

}<?XML:NAMESPACE PREFIX = O /??>

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
14 sept. 2007 à 11:26
Génial,

On avance avec cela j'arrive à aplliquer une action à mes clips.

mon root_text affiche bien "ok".

Maintenant autre problème, je voudrais ouvrir une image différente sur chaque miniature.

Pour faire mes test tu aurras remarqué que j'ai attribué dans ma boucle une variable numero à chaque miniature :

this["clip"+n].numero = n;

ou encore de cette façon

target_mc.numero = n;

J'ai donc essayer avec cette methode d'afficher ce numero dans ma zone de _root.text, ce numéro devrais être différent pour chaque miniature, de cette façon :

target_mc.onRelease=function(){
 _root.essais.text = target_mc.numero;
}

Pour tout mes boutons j'ai "14" affiché dans ma zone de texte, ce qui corespond au dernier chifre de ma boucle.

Ou dois je mettre :

target_mc.onRelease=function(){
 _root.essais.text = target_mc.numero;
}

Pour que le numero soit différent pour chaque bouton ?

Merci beaucoup pour ton aide
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
14 sept. 2007 à 11:50
Wi, on avance... mais on est pas au bout de nos peines !!!

Il y a tout de même quelques bugs :o)

Dans ta boucle for n... tu redéfinis a chaque itération le mcLoader et l'écouteur, ceci n'est pas nécessaire
Autre chose, tu utilises n dans la fonction loadListener.onLoadInit automatiquement la fonction lorsqu'elle sera appelée prendra en considération la dernière valeur de n (soit 14)

Bref, je reformulerais la chose un peu différement (sans garantie, je sais pas tester mon code pour le moment)
_root.largeur 0;<?XML:NAMESPACE PREFIX O /??>

// Definition de l'écouteur
var loadListener:Object = new Object();
loadListener.onLoadInit = function(target_mc:MovieClip, httpStatus:Number):Void {
 var n=target_mc.numero
 if (n == 1) {
      _root.largeur = target_mc._width;
      target_mc._x= 0;
 } else {
    target_mc._x=  _root.largeur;
   _root.largeur += ( target_mc._width + 10); 
 }
target_mc.onRelease=function(){
 _root.essais.text = this.numero

}

// Definition d'un unique MCLoader
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);

for (var n = 1; n < 14; n++) {

  var _mc:MovieClip=_root.slider.attachMovie("bouton_miniature", "clip"+n, this.getNextHighestDepth());
  _mc.numero = n;

 
mcLoader.loadClip("icones_scrollers/beauty/serie_3/beauty_scroll_"+n+".jpg", _mc);
}

@+
0
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
14 sept. 2007 à 11:59
Merci beaucoup,

J'ai essayé avec cette méthode, en rajoutant un ";" après  _root.essais.text = this.numero
et une "}" après :

_root.essais.text = this.numero;

}
<?XML:NAMESPACE PREFIX = O /??>

}

Car le monsieur n'était pas content lors de la publication, résultat un magnifique "undefined" dans mon _root.essais.

J'ai fait une bourde ?
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
14 sept. 2007 à 12:12
Non, tu as bien fait de rajouter l'accolade
Sans doute le même soucis que plus haut... les caractéristiques de  _mc.numero = n sont écrasées lors du chargement de l'image
Peut-on evisager le créer un movieclip vide dans le _mc et de charger l'image là ?
_root.largeur 0;<?XML:NAMESPACE PREFIX O /??>

// Definition de l'écouteur
var loadListener:Object = new Object();
loadListener.onLoadInit = function(target_mc:MovieClip, httpStatus:Number):Void {
 var n=target_mc.parent.numero
 if (n == 1) {
      _root.largeur = target_mc.parent._width;
      target_mc.parent._x= 0;
 } else {
    target_mc.parent._x=  _root.largeur;
   _root.largeur += ( target_mc.parent._width + 10); 
 }
target_mc.parent.onRelease=function(){
 _root.essais.text = this.numero

}

}
// Definition d'un unique MCLoader
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(loadListener);

for (var n = 1; n < 14; n++) {

  var _mc:MovieClip=
_root.slider.attachMovie("bouton_miniature", "clip"+n, _root.slider.getNextHighestDepth());
 var _container:MovieClip=_mc.createEmptyMovieclip("Container",10) 
_mc.numero = n;

 
mcLoader.loadClip("icones_scrollers/beauty/serie_3/beauty_scroll_"+n+".jpg", _container);
}

@+
0
cs_converse Messages postés 46 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 14 mai 2009
14 sept. 2007 à 12:31
Ahhrrg, merci encore pour ton aide,

Avec cette nouveautée, le clip container n'est dupliqué qu'une fois et rien n'est chargé dedans

????????????????????
0
Rejoignez-nous