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

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  AS2 : faire un "callback" dans une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

AS2 : faire un "callback" dans une fonction

n°1845988
freed102
Arayashiki
Posté le 02-02-2009 à 10:46:08  profilanswer
 

Bonjour à tous,
 
Une petite question AS2, j'aimerai faire un "callback" dans une fonction, mais je ne sais aps comment procéder, je m'explique avec un bout de code :
 
j'aimerai faire un truc qui ressemble à ça, l'argument "callBack" serait en fait le nom de la fonction à executer lors de mon action onPress :
 
 
 

Code :
  1. function maFonction(arg1,arg2,callBack){
  2. myBtn.onPress=function(){
  3. callBack();
  4. }
  5. }
  6. maFonction(""monArg1","monArg2","maFonctionCallBack" );
  7. function maFonctionCallBack(){
  8. trace("mon call back a fonctionné !" )
  9. }


 
 
voila le fameux callBack(); ne suffit pas... je ne sais pas comment faire !
 
une petite idée ?
 
Merci d'avance
 
Freed

mood
Publicité
Posté le 02-02-2009 à 10:46:08  profilanswer
 

n°1846328
Zedlefou
In cabbage we trust !
Posté le 03-02-2009 à 04:26:06  profilanswer
 

D'ou l'interet du typage.
Si tu avais ecris ta fonction ainsi :
function maFonction(arg1:String, arg2:String, callBack:Function){
 
Il t'aurai renvoyé (dans les dents) "Type mismatch."
 
Dans les arguments que tu donnes, le dernier est une chaine alors que ca devrait etre ta fonction. Donc t'enleves les guillemets et c'est bon ...


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1848940
freed102
Arayashiki
Posté le 09-02-2009 à 14:29:00  profilanswer
 

merci pour l'info, en fait je crois que c t effectivement les guillemets qui genaient :) merci !

n°1850444
freed102
Arayashiki
Posté le 12-02-2009 à 16:09:48  profilanswer
 

Zedlefou a écrit :

D'ou l'interet du typage.
Si tu avais ecris ta fonction ainsi :
function maFonction(arg1:String, arg2:String, callBack:Function){
 
Il t'aurai renvoyé (dans les dents) "Type mismatch."
 
Dans les arguments que tu donnes, le dernier est une chaine alors que ca devrait etre ta fonction. Donc t'enleves les guillemets et c'est bon ...


 
 
voila je déterre ce topic, car je suis confronté à un autre souci... je m'explique :
 
dans mon XML j'ai ça :

Code :
  1. <fieldset group="">
  2. <field type="select" name="nb_enfants" value="<?= $_SESSION['recherche_vacances']['nb_enfants'] ?>" default=""  width="55" height="200" callback="selectChildren" >
  3.  <option value="1" alt=""><![CDATA[1]]></option>
  4.  <option value="2" alt=""><![CDATA[2]]></option>
  5.  <option value="3" alt=""><![CDATA[3]]></option>
  6.  <option value="4" alt=""><![CDATA[4]]></option>
  7.  <option value="5" alt=""><![CDATA[5]]></option>
  8.  <option value="6" alt=""><![CDATA[6]]></option>
  9.  <option value="7" alt=""><![CDATA[7]]></option>
  10.  <option value="8" alt=""><![CDATA[8]]></option>
  11.  <option value="9" alt=""><![CDATA[9]]></option>
  12.  <option value="10" alt=""><![CDATA[10]]></option>
  13.  <option value="11" alt=""><![CDATA[+10]]></option>
  14. </field>
  15. </fieldset>


 
dans mon AS2 j'ai fait ça :
 
 
(parser mon XML )

Code :
  1. for(i=0;i<configNodes.length;i++){
  2.   var nodes=configNodes[i].firstChild
  3.   trace("name : "+nodes.attributes.name+" type : "+nodes.attributes.type);
  4.   if(nodes.attributes.type=="select" ){
  5.    var values:Array=new Array();
  6.    var libelle:Array=new Array();
  7.    var alt:Array=new Array();
  8.    var value=nodes.attributes.value;
  9.    var object:MovieClip=_root[nodes.attributes.name];
  10.    var width:Number=nodes.attributes.width;
  11.    var height:Number=nodes.attributes.height;
  12.    var fieldsNode=nodes.childNodes;
  13.    var callBack:Function=nodes.attributes.callback;
  14.    trace("callBack : "+callBack)
  15.    for(n=0;n<fieldsNode.length;n++){
  16.     values.push(fieldsNode[n].attributes.value);
  17.     alt.push(fieldsNode[n].attributes.alt);
  18.     libelle.push(fieldsNode[n].firstChild.nodeValue);
  19.    }
  20.    createSelect(object,libelle,values,"Choisissez...",value,'',width,height,alt,callBack);
  21.   }


 
fonction :
 

Code :
  1. function createSelect(mc:MovieClip, libelle:Array, values:Array, emptyValue:String, defaultValue:String, selectedValue:String, width:Number, height:Number,infos:Array,callBack:Function) {
  2. [...]
  3. callBack(this.value.length);
  4. trace("callback ? =>"+callBack);
  5. [...]
  6. }
  7. function selectChildren(lenght){
  8. trace(toto);
  9. }


 
 
Donc voila.. ça ne marche pas.. pourtant mon trace("callback ? =>"+callBack) me retourne bien "callback ? => selectChildren" mais la fonction selectChildren n'est pas executée... sauf si je le mets à la main sans guillemets comme ça :
 
createSelect(object,libelle,values,"Choisissez...",value,'',width,height,alt,selectChildren);
 
 
Que faire ?
 
PS :  je viens d'essayer de mettre dans mon XML  callback="asfunction:selectChildren"  ... mais ça ne marche pas :(
 
Freed


Message édité par freed102 le 12-02-2009 à 16:18:48
n°1850477
Mr Mala
Posté le 12-02-2009 à 16:44:31  profilanswer
 

D'après moi, ce qui pourrait déconner, c'est ceci

Code :
  1. var callBack:Function=nodes.attributes.callback;


 
nodes.attributes.callback est un string ... que tu tentes d'assigner à une variable de type Function ...  
 
Quand tu tapes la ligne createSelect() à la main, tu passes bien directement le pointeur vers la fonction selectChildren() .. et du coup, ça fonctionne.
 
Essaye ceci:

Code :
  1. var callBack:Function=eval(nodes.attributes.callback);


n°1850491
freed102
Arayashiki
Posté le 12-02-2009 à 16:52:56  profilanswer
 

Mr Mala a écrit :

D'après moi, ce qui pourrait déconner, c'est ceci

Code :
  1. var callBack:Function=nodes.attributes.callback;


 
nodes.attributes.callback est un string ... que tu tentes d'assigner à une variable de type Function ...  
 
Quand tu tapes la ligne createSelect() à la main, tu passes bien directement le pointeur vers la fonction selectChildren() .. et du coup, ça fonctionne.
 
Essaye ceci:

Code :
  1. var callBack:Function=eval(nodes.attributes.callback);




 
 
Génial Missieu Mala !! ça marche !!!
 
je ne connaissais pas vraiment l'utilité de cette fonction "eval"... il va falloir que je me penche un peu plus dessus


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  AS2 : faire un "callback" dans une fonction

 

Sujets relatifs
interet fonction voidProbleme de lieur
Lister un dossier en fonction du loginhéritage multiple, surcharge de fonction avec même nom
fonction executable par asp[Access] Fonction "SOMME" dans un etat qui ne fonctionne pas
Afficher certaines balises xml en fonction de leurs attributs[HTML] Pblm fonction "Z Index"
retour de fonction par référence et chainage d'opérationProblèmes avec la fonction mail (mails HTML)
Plus de sujets relatifs à : AS2 : faire un "callback" dans une fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR