Action sur des textes dynamiques et movieClip

Résolu
spg40 Messages postés 10 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 1 février 2006 - 31 août 2005 à 10:35
spg40 Messages postés 10 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 1 février 2006 - 1 sept. 2005 à 12:39
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

_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
31 août 2005 à 16:06
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
3
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
31 août 2005 à 17:15
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
3
spg40 Messages postés 10 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 1 février 2006
1 sept. 2005 à 12:39
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
3
spg40 Messages postés 10 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 1 février 2006
31 août 2005 à 17:06
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
0

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

Posez votre question
spg40 Messages postés 10 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 1 février 2006
31 août 2005 à 17:34
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
0
_benjy Messages postés 1575 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 21 février 2011 2
31 août 2005 à 17:43
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
0
Rejoignez-nous