Action sur des textes dynamiques et movieClip

Résolu
Signaler
Messages postés
10
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
1 février 2006
-
Messages postés
10
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
1 février 2006
-
Bonjour,


je crée un moteur de recherche. Je fait ma recherche et je récupère les résultats à travers un fichier PHP. Je mets mes résultats dans des champs textes. Je voudrais cliquer sur le texte et ouvrir un swf dépendant de mon texte sur ma scène, ce swf est généré à partir l'id du texte et d'autres données liées au texte. Je ne veut pas passer par l'Url.


Comme un texte, même dynamique n'est pas clickable, je l'ai mis dans un movieClip : MC_num_id_d où num est le numéro de mon texte,
id est son id BD associé,
d la donnée associée.


je n'arrive pas à utiliser une fonction de type onRelease sur le MC_num_id_d. Je ne sais pas où la placer. J'ai essayé de le mettre dans la boucle de construction des MC_num_id_d. Lorsque je passe sur mon texte, je peut cliquer mais rien ne se produit : le num, l'id et d n'ont pas été associés au texte. Ils sont soit indéfinis, soit globaux(identiques pour tous, le dernier).


Il y 2 jours que je bute sur ce pb, si qq'un a une solution! C'a devient urgent.........



SPG40

6 réponses

Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
bon j'imagine que tes MC sont dupliqué (vu que tu en parle pas)

donc :

var i = 0;

var count = Results.length

while (i<count){

var init = new Object();

init.id = Result[i].id;


init.d= Result[i].d;

init.index = i;

originalClip.duplicateMovieClip("mc"+i,i+10,init);

}



dans le clip dupliqué, sur la premiere image

if (_name == "originalClip"){ // on le cache il sert a rien en lui mm

_visible = false;

return;

}

if (index > 0){ // on les empile

_y = _parent["mc"+(index-1)]._y + _parent["mc"+(index-1)]._height;

}

function onRelease (){

getURL("page.php","_blank","post"); // les var id, d, et index partent vers la fenetre en post

}

en esparant t'avoir aidé

++

Flash sans Limites
_Benjy
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
tu peux pas passé un tableau depuis php a flash, flash comprendra pas les var

donc là c bon

ce que je capte pas c'est que tu dois bien creer tes elements.

donc c'est soit un duplicate, soit un attachmovie, soit un createMovie, ce qui est pareil pour mon explication si dessus

enfn nan pour un createMovie, tu dois mettre les elts du clip (tel onrelease) dans l'init objet

obj.onRelease = functio(){ ... }

++

Flash sans Limites
_Benjy
Messages postés
10
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
1 février 2006

Bonjour _Benjy ,


ça y est, j'ai trouvé une solution, qui fonctionne dans un movieClip ou un scrollpanel. j'avais un pb de chemin jusqu'au nv clip créé et pour utiliser le onRelease (il fallait utiliser valueOf() ).

J'ai fait une fonction.

Si ça t'intéresse elle ressemble à ça :

function resultat_trace(chemin, MCTexte, id,d, texte, largeur_texte, hauteur_texte, posY, posX){


//on crée le MCTexte et onlui met les variables qu'on va utiliser dans le onRelease
chemin.createEmptyMovieClip(MCTexte, i_layer +=1 );
chemin[MCTexte].id = id;
chemin[MCTexte].d = d;

metrique = _root.TXTformat_choix.getTextExtent(texte, largeur_texte);
posY += hauteur_texte;
hauteur_texte = metrique.textFieldHeight + 4;

chemin[MCTexte].createTextField("TXT_liste", i_layer+=1 , posX, posY, largeur_texte, metrique.textFieldHeight);

with (chemin[MCTexte].TXT_liste) {
// propriétés du texte
...
}

//on applique l'événement onRelease au MCTexte
chemin[MCTexte].valueOf().onRelease = function(){
trace("Vous venez de cliquer sur le texte.");
trace(this.id);
trace(this.d);
}


return posY, hauteur_texte;
}

On a MCTexte qui est définit dans mon traitement des données issues du php avec :
MCTexte = "MCTexte_"+id+"_"+d;
de manière à garder son unicité.

Merci pour ton aide.

A+

SPG40
Messages postés
10
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
1 février 2006

Merci _Benjy ,

mais en fait je ne fait pas de duplicateMovieClip. En effet, suivant le nombre de résultats à ma recherche, je les affiche soit dans un movieClip (MCListe) que je crée pour l'occasion, soit dans un scrollpane(déjà positionné sur ma scène).

Il faut donc que je crée les MovieClip au fur et à mesure ; d'où leur nom si long.

En fait, tu trouvera un exemple de ce que je veut faire sur : http://www.ville-saintdenis-reunion.fr/ , sélectionne le 'plan de la ville'. C'est toute la partie recherche. Mais résultats restant sur la partie gauche de ma scène, la partie centrale étant dynamique : elle varie dynamiquement en fonction du résultat sélectionné.

Je ne remonte pas les résultats depuis mon php dans un tableau multidimensionnel mais comme une suite de texte 'numéroté'.

<?php
//traitement : recherche des resultats en fonction des données transmises
...
//resultats transmis au flash
$nbr_enreg=0;
while ($row=mysql_fetch_object($requete)) {
...
echo "&".$nbr_enreg."=".$t."&".($nbr_enreg+=1)."=".$d."&".($nbr_enreg+=1)."=".$r."&".($nbr_enreg+=1)."=".$id."&".($nbr_enreg+=1)."=".$q;
$nbr_enreg+=1;
}
>

La solution d'un tableau serait-elle plus efficace?

Je cherche dans toutes les directions...

SPG40
Messages postés
10
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
1 février 2006

Je fait des createEmptyMovieClip. Par exemple, pour écrire dans ma MCListe (peu de résulktats pour ma recherche).

//Récupération des résultats
for (php_var in requete) {
...
//Ecriture dans la MCListe
if (nbr_enreg == 1) {
//On crée la MCListe à vide
_root.createEmptyMovieClip("MCListe", 1);
}
MCListe.createEmptyMovieClip(["MCTexte_"+num+"_"+id+"_"+d], i_layer +=1 );
var monclip=MCListe["MCTexte_"+num+"_"+id+"_"+d];
//calcul de la métrique pour récupérer la hauteur et la longueur d'un texte suivant les propriétés du TextFormat
metrique = _root.TXTformat_choix.getTextExtent(php_string, largeur_scrollpanel);
// position en Y du texte (on tient compte de la hauteur du texte précédent)
posY += height_last_text;
// mémorise la hauteur du dernier texte pour incrémentation en Y, et on ajoute la ligne blanche séparant les résultats.
height_last_text = metrique.textFieldHeight + 4;
// on utilise la metrique (la hauteur) pour créer le champ texte dans la MCListe
monclip.createTextField(("TXT"+num+"_"+id+"_"+d), i_layer , posX_nbr, posY, largeur_scrollpanel, metrique.textFieldHeight);
//on applique les propriétés suivantes au champ texte créé
with (monclip["TXT"+num+"_"+id+"_"+d]) {
list_choix_TXTformat(php_idvoie);
setNewTextFormat(_root.TXTformat_choix);
type = "dynamic";
background = true;
autoSize = "left";
text = php_string ;
html = true;
wordWrap = true;
backgroundColor = bgcolor;
//on force la largeur du champ texte
_width = largeur_scrollpanel;
selectable=true;
}
php_text = id+ " / " + d
monclip.onPress=function()
{
trace(monclip._name);
//startDrag(monclip);
monclip._visible = false;
}
monclip.onRelease = function(){
trace("Vous venez de cliquer sur le texte.");
trace(num);
trace(php_idvoie);
trace(php_rgraph);
trace(monclip._name);
//stopDrag();
monclip._visible = true;
map_generation(x,y,0,0,id, r);
}
num +=1;
monclip="";
} ...
nbr_enreg+=1;
...
}

Rmq : i_layer correspond à la profondeur.

Si tu as une idée sur ce qui cloche dans ce code? Toute idée est bonne à prendre.
Ce qui est bizarre, c'est que les fonction starDrag() et stopDrag() semblent fonctionner : car elles n'utlisent aucun paramètre variable à proprement parler?

A+.

SPG40
Messages postés
1575
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
21 février 2011
2
désolé mais j'ai pas le courage de lire un post pareil

fait toi un sample plus cours et je regarderai

Flash sans Limites
_Benjy