Lien href dans mon fichier fla

cs_bermond Messages postés 3 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 27 octobre 2009 - 27 oct. 2009 à 20:52
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010 - 27 oct. 2009 à 23:58
Bonjour, j'avoue, je suis surement une bille en flash mais j'ai une excuse, je débute.

J'ai créer une bande avec des images qui défilent en boucle.

Mes images sont référencés dans un fichier xml.
J'ai réussi à arrêter le défilement quand ma souris passe dessus en ajoutant un bouton.

Maintenant, je voudrais pouvoir cliquer sur chaque image et ouvrir un lien html pour chaque image.
Ce lien html serait référencé dans mon xml.

Voici l'action script que j'ai implémenté dans mon fichier .fla

Help me please.


[i]

movieClip.prototype.loadGalerieFromXml = function(file,zoneTaille,zoneEspace,affichage,nombre){

this.galerieXml = new XML();
this.galerieXml.parent=this;
this.galerieXml.ignoreWhite = true;
this.galerieXml.onLoad = function(){
this.parent.zoneTaille = zoneTaille;
this.parent.zoneEspace = zoneEspace;
this.parent.picsLoaded = true;
this.parent.affichage = affichage;
this.parent.galeriev = this.firstChild.childNodes;
this.parent.lon = this.parent.galeriev.length;
lon2 = this.parent.lon * 2;
j = 0;
for (var i = 0; i<lon2; i++) {
if (i>=this.parent.lon) {
j = i - this.parent.lon;
} else {
j = i;
}
var nom = this.parent.galeriev[j].attributes.nom;
trace(nom);
this.parent.createEmptyMovieClip("bitmap_mc"+i, i+10);
this.parent["bitmap_mc"+i].loadMovie(nom);
}




this.parent.onEnterFrame=function(){
this.picsLoaded=true;
for (var i = 0; i<this.lon; i++)
if(this["bitmap_mc"+i].getBytesLoaded() !=this["bitmap_mc"+i].getBytesTotal()||this["bitmap_mc"+i].getBytesLoaded()==0)
{this.picsLoaded=false;break}

for (var i = 0; i<this.lon; i++)
if(this["bitmap_mc_bis"+i].getBytesLoaded() !=this["bitmap_mc_bis"+i].getBytesTotal()||this["bitmap_mc_bis"+i].getBytesLoaded()==0)
{this.picsLoaded=false;break;}

if(this.picsLoaded==true){
trace("ok");
if (stopouencore=="encore") {
decalage2 = decalage - ((this.lon*120) + ((this.lon)*20));
if (decalage2 >= 0) {
decalage = decalage2;
decalage2 = decalage - ((this.lon*120) + ((this.lon)*20));
}
}

for (var i=0; i<this.lon*2; i++) {
this["bitmap_mc"+i]._x = decalage2 + 20 + i*140;
this["bitmap_mc"+i]._y = 20;
}

if (stopouencore=="encore")
decalage = decalage + 5;
}
}
}
this.galerieXml.load(file);
}

/*---------------------*/

var decalage = 0;
var decalage2;
var stopouencore = "encore";
_root.createEmptyMovieClip("galerie",1);
_root.galerie.loadGalerieFromXml("galerie.xml",80,10,"Colonnes",4);

start();


[i][i][i]/i/i/i
/i

5 réponses

zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
27 oct. 2009 à 21:15
Bonjour bermond,

Premièrement, pour un débutant ton code est pas mal du tout.

Ensuite, je ne vois pas comment tu as programmer tout ca sans connaitre la fonction getURL(); qui fonctionne comme ceci: getURL('url', 'target');

donc getURL('http://www.google.com/', '_blank');


---------------------------------------------------------
Julien B.
0
cs_bermond Messages postés 3 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 27 octobre 2009
27 oct. 2009 à 21:18
bonjour julien,

j'ai été informaticien dans une vie antérieure alors je sais me démerder pas mal :).
J'ai créer ce code en faisant un mélange de plusieurs codes trouvés sur le net.
J'avais trouvé la fonction getURL mais je n'arrive pas à la lié à une de mes images.
Quand je la lie directe à une image, il me l'ouvre sans même que je clique.
Et je n'arrive pas à créer un évèment mouseClick sur chaque image.

Merci.

MAtthieu
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
27 oct. 2009 à 23:35
Salut,

je n'ai pas trop compris l'intérêt de modifier le prototype mis à part te faire plaisir à l'utiliser :). Je pense que tu devrai (si le cœur t'en dit) utiliser des classes plutôt (puisque tu a l'air branché "objet").

Sinon pour ton soucis, il faut "lié" ton image au lien une fois chargé. Hors le loadMovie va remplacer ton clip bitmap_mc, tu devrai sans doute créer un conteneur dans bitmap_mc ou tu chargera ton image, et mettre l'évènement onRelease sur bitmap_mc qui pointe vers un getURL ou un truc du genre, à toi de voir après.
0
cs_bermond Messages postés 3 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 27 octobre 2009
27 oct. 2009 à 23:38
merci crackter, mais j'ai rien compris :)

je veux modifier le prototype pour pouvoir faire un lien sur chaque image du bandeau déroulant.
0

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

Posez votre question
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
27 oct. 2009 à 23:58
ok pour le proto, mais c'est tout à fait possible sans modifier le proto. Et pour la classe, c'est de la programmation orienté objet, vue que tu modifies le proto, je me suis dit que tu voulais programmer tes propres objets (on modifiait les proto en as1 quand la prog objet n'était pas présente).

en fait pour l'histoire du loadMovie, cela remplace tout évènement contenu dans le clip chargé, si tu t'amuses par exemple à faire un _root.loadMovie("fichier.swf"), tout ce qui est présent sur ta scène est remplacé par fichier.swf, tes clips, tes évènements, tout ton code. Donc le but est de créer dans tes clips bitmap_mc ici

this.parent.createEmptyMovieClip("bitmap_mc"+i, i+10);
this.parent["bitmap_mc"+i].loadMovie(nom); 


un autre clip pour contenir tes images, ainsi tu pourra créer un évènement onPress ou onRelease sur bitmap_mc sans qu'il soit effacé. du genre :

this.parent.createEmptyMovieClip("bitmap_mc"+i, i+10);
var c:MovieClip = this.parent["bitmap_mc"+i].createEmptyMovieClip("conteneur",1);
c.loadMovie(nom);
this.parent["bitmap_mc"+i].onPress=function() {
  getURL("tonlien","_blank");
}


j'espère avoir été plus clair.
0
Rejoignez-nous