fonction et return

fonction et return - Flash/ActionScript - Programmation

Marsh Posté le 31-08-2006 à 15:12:23    

la question est surement bete.. mais bon je vais la poser quand même
 
en PHP, quand on fait
 

Code :
  1. function maFonction($arg)
  2. {
  3. return $arg;
  4. }
  5. if(maFonction("toto" ))
  6. {
  7. echo "c bon la fonction est passée!";
  8. }
  9. else
  10. {
  11. echo "non c pas bon !";
  12. }


 
la fonction est donc executée et la condition est donc executée (car la fonction a un return qui n'est pas "false" )
 
... en actionscript... j'ai tenté de faire (en résumé !)
 
if(loadMovie("toto.swf,mcClip))
{
trace("ok" );
}
 
... mais ça marche pas ! il me trace pas mon OK même si le loadMovie est ok...
 
comment faire pour qu'une fonction return quelquechose et permette d'executer une commande dans un if ?
 
Merci
 
Freed

Reply

Marsh Posté le 31-08-2006 à 15:12:23   

Reply

Marsh Posté le 31-08-2006 à 21:15:03    

(loadMovie() utilisé seul est une fonction globale, antédiluvienne et il est admis que son usage est à proscrire)
 
mcItem.loadMovie() est une méthode de la classe MovieClip, et retourne un type Void, dixit la doc. Ce qui ne correspond pas à l'usage que tu veux en faire. tu dois donc l'encapsuler dans une autre fonction perso qui effectue aussi un test et qui retournera ensuite ce que tu veux. Ici le test à encapsuler est un truc du style : if(typeof(this.mcCible.mcClipAttaché) != 'movieclip')
 
tu peux étendre la classe MovieClip pour ça. difficile de répondre plus avant sans plus d'informations.  
 
note que beaucoup de méthodes retournent qqch. Par exemple : MovieClip.attachMovie retourne une référence à un MC, idem pour MovieClip.createEmptyMovieClip. Mais on ne pratique pas ça de manière généralisée comme le return 0; sytématique en C, par ex.
 
Sur ton exemple précis, j'éviterai MovieClip.loadMovie() pour utiliser un MovieClipLoader à la place, qui dispose d'un événement onError.


Message édité par craps_youpla le 31-08-2006 à 21:16:11
Reply

Marsh Posté le 31-08-2006 à 22:22:01    

oui mais j'avais utilisé ça comme exemple, dans la réalité c'etait une fonction propre que j'ai créé loadMap(), mais quand je fais  
 
function loadMap(test)
{
 
return true;
}
 
if(loadMap(blablabla))
{
trace("ok" );
}
 
et bien il me fait pas mon trace !

Reply

Marsh Posté le 31-08-2006 à 22:35:14    

en faisant ctrl+C, ctrl+V depuis ton  propre message vers Flash sans aucune modif, tu verras que le code que tu viens de taper fonctionne :D Regarde donc plutôt le reste du code de ta fonction loadMap.
 
à noter qu'il est d'usage de typer les valeurs de retour et les arguments de ses fonctions, ce qui aide grandement au débuggage...
 

Code :
  1. function loadMap(pTest:String):Boolean {
  2.     return true;
  3. }
  4. var foo:String = 'bar';
  5. !loadMap(foo)?
  6. trace("loadMap failed" ):
  7.     trace("loadMap succeeded" );


Message édité par craps_youpla le 31-08-2006 à 22:45:46
Reply

Marsh Posté le 31-08-2006 à 23:39:48    

ça je maitrise pas encore les String et les Boolean.. ça me perturbe un peu en fait, j'ai l'impression qu'à chaque fois que je mets un truc comme ça ça marche plus !hihi

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed