Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1292 connectés 

  FORUM HardWare.fr
  Graphisme
  Web design

  Galerie en fash problem avec on "release"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Galerie en fash problem avec on "release"

n°984249
vivienus
Posté le 05-11-2007 à 17:34:57  profilanswer
 

Salut, j'essaye de réaliser une galerie en flash,
pour cela je load des .swf dans un dossier, puis je leur donne une position, jusque là ça marche, mais j'aimerais aussi qu'il puisse réagir quand on clique dessus avec le "onRealeas"e, malheureusement quand on clique dessus il ne se passe rien :heink: .
Voici mon code:
 
for (var i = 1 ; i<=_global.num; i++) {
createEmptyMovieClip("clip"+i, i);
loadMovie("pict_"+i+".swf","clip"+i);
this["clip"+i]._x = 400;
this["clip"+i]._y = 200;  
this["clip"+i].onRelease = function(){
 this["clip"+i]._y = 300;
 };
}
 
Merci

mood
Publicité
Posté le 05-11-2007 à 17:34:57  profilanswer
 

n°984299
Zedlefou
In cabbage we trust !
Posté le 06-11-2007 à 05:28:52  profilanswer
 

Le bon code c'est ca :

Code :
  1. for (var i = 1; i <= _global.num; i++) {
  2. var clip:MovieClip = this.createEmptyMovieClip("clip" + i, i);
  3. loadMovie("pict_" + i + ".swf", clip);
  4. clip.id = i;
  5. clip._x = 400;
  6. clip._y = 200;
  7. clip.onRelease = function() {
  8.  clipClick(this.id);
  9. };
  10. }
  11. function clipClick(id) {
  12. this["clip" + id]._y = 300;
  13. }


Si tu donnes pas un identifiant a ton clip, le onRelease peut pas le retrouver. Cet exemple est valable pour poser des events sur des objets en boucle.
Dans ton cas, tu peux simplement faire :
 clip.onRelease = function() {
  this._y = 300;
 };


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°984330
vivienus
Posté le 06-11-2007 à 12:14:29  profilanswer
 

Salut, merci pour ta réponce,
 
j'ai remis le code suivant:
 
for (var i = 1; i <= _global.num; i++) {
var clip:MovieClip = this.createEmptyMovieClip("clip" + i, i);
loadMovie("pict_" + i + ".swf", clip);
clip.id = i;
clip._x = (i-1)*_global.eccart;;
clip._y = 200;
clip.onRelease = function() {
 clipClick(this.id);
};
}
function clipClick(id) {
this["clip" + id]._y = 300;
}
 
 
 
Mais il ne veut toujours rien savoir, je suis sur flash MX 2004, vu que c'est une vieille version ça vient peu être de là?
A+
 
 

n°984335
Zedlefou
In cabbage we trust !
Posté le 06-11-2007 à 13:09:29  profilanswer
 

Ta placé un trace dans ton onRelease pour voir ?


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°984349
vivienus
Posté le 06-11-2007 à 14:58:22  profilanswer
 

oui, j'ai essayé ça:
 
_global.eccart=500;
_global.num=5;
 
 
for (var i = 1; i <= _global.num; i++) {
var clip:MovieClip = this.createEmptyMovieClip("clip" + i, i);
loadMovie("pict_" + i + ".swf", clip);
clip.id = i;
clip._x = (i-1)*_global.eccart;
clip._y = 200;
clip.onRelease = function() {
 clipClick(this.id);
};
}
function clipClick(id) {
 trace("salut!!! = " );
}
 
 
 
mais y a rien qui sort...
Je précise que ce code tel quel sur une frame, au cas ou...
A+
 
 

n°984410
Zedlefou
In cabbage we trust !
Posté le 06-11-2007 à 17:46:10  profilanswer
 

Ah oui non, ca me revient, le clip que tu crees il doit faire 0x0px du coup il est pas clicable meme en mettant un clip dedans.
Faut trouver un moyen de parer ça.
Mais la je vais me coucher, la reponse demain peut etre :D


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°984459
antika
Posté le 06-11-2007 à 22:12:39  profilanswer
 

Code :
  1. _global.eccart=500;
  2. _global.num=5;
  3.  
  4. for (var i = 1; i <= _global.num; i++) {
  5. var clip:MovieClip = this.createEmptyMovieClip("clip" + i, i);
  6. loadMovie("pict_" + i + ".swf", clip);
  7. clip.id = i;
  8. clip._x = (i-1)*_global.eccart;
  9. clip._y = 200;
  10. clip.onRelease = clipClick;
  11. function clipClick() {
  12. trace( "id: " + this.id );
  13. }


 
"()" est l'opérateur d'appel d'une fonction, "clipClick" est une fonction. Quand on supprime l'opérateur d'appel, on pointe juste la fonction.
 
C'est pour ça que ...
 

Code :
  1. delete this.onRelease


 
... est couramment utilisé, là c'est le même principe.
 
Lors d'une affectation du type :
 

Code :
  1. clip.onRelease = clipClick;


 
le scope de la fonction est logiquement celui de l'objet à laquelle elle est attribuée ici <clip>, donc this = le bouton.
 
mon premier code est donc équivalent à ça, mais en plus logique et en moins lourd :

Code :
  1. import mx.utils.Delegate;
  2. _global.eccart=500;
  3. _global.num=5;
  4.  
  5. for (var i = 1; i <= _global.num; i++) {
  6. var clip:MovieClip = this.createEmptyMovieClip("clip" + i, i);
  7. loadMovie("pict_" + i + ".swf", clip);
  8. clip.id = i;
  9. clip._x = (i-1)*_global.eccart;
  10. clip._y = 200;
  11. clip.onRelease = Delegate.create(clip,clipClick);
  12. function clipClick() {
  13. trace( "id: " + this.id );
  14. }


 
Les fonctions sont des objets de la classe Function, qui est intéressante et très pratique, particulièrement sa méthode call() pour faire des callbacks "scopables" qu'on trouve parfois dans l'API (par exemple reproduire une structure du type setInterval( <scope> , <méthode> , ... )).


Message édité par antika le 06-11-2007 à 22:25:28
n°984463
vivienus
Posté le 06-11-2007 à 22:42:11  profilanswer
 

Salut, je doit mal m'y prendre, ça ne marche pas non plus...
Les image s'affichent bien mais ne sont pas cliquables.

n°984465
antika
Posté le 06-11-2007 à 22:46:33  profilanswer
 

tu ne dois pas charger l'image directement dans <clip>, à l'arrivée de l'image elle efface les méthodes & propriétés que tu viens de lui affecter.
 
créer un sous-clip dans <clip> et attache-là dessus.
 

n°984650
vivienus
Posté le 07-11-2007 à 21:27:56  profilanswer
 

Salut, en effet, le chargement de l'image efface les proprietés,
J'ai pu résoudre le problème grace à ce code trouvé sur le net:
 
if(__onLoadHandler__ == undefined) _global.__onLoadHandler__ = {};
//assign property-handlers for onLoad (courtesy of Gnut)
MovieClip.prototype.addProperty(
"onRelease",
function(){return __onLoadHandler__[this]},
function (f){__onLoadHandler__[this] = f}
);
 
Merci A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Graphisme
  Web design

  Galerie en fash problem avec on "release"

 

Sujets relatifs
[ JaK ] Déterrage d automne ! Up = 24/10/2010[Galerie] Vivedragon57 - mes dessin dragon ball z
insertion d'une image en fond d'une galerie web photo dans photoshopCS[Galerie] sebouvard.free.fr
cherche modèle galerie flash[ Webdesign ] Nobock.fr, galerie virtuelle.
[Galerie] Fluty - Modélisation 3Dsuperposition d'images dans une galerie flash
[Galerie] Cyfer[Aslan17] - Test Zspheres de Zbrush (27/11/2009)
Plus de sujets relatifs à : Galerie en fash problem avec on "release"


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)