IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Appel dynamique de fonctions


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Par défaut Appel dynamique de fonctions
    Bonjour,

    J'ai le nom de la fonction, ainsi que ses paramètres dans une variable String, que je souhaiterai exécuter. Ce que j'ai pour l'instant pu trouver sur Internet ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    import libs.voiture;
     
    private function preinit():void
    {
    	voitureClass = new Voiture();
    }
     
    var functionName:String = "voitureClass.test";
    var arg:String = "'a', 'b'";
    if (this.hasOwnProperty(functionName))
         var x:String = this[functionName](arg);
    La classe voiture a été déclarée avec le mot clé dynamic, et se trouve dans un .swf correctement importé (un appel direct fonctionne très bien).

    Il semble déjà que this.hasOwnProperty(functionName) retourne 'false'. J'en suis déjà à quelques tests, je ne comprends pas ce qui se passe.

    Merci de votre aide,
    Vence

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Je n'ai jamais appelé des fonctions ainsi, mais si c'est possible la syntaxe serait plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var voiture : Voiture = new Voiture();
    var functionName:String = "test";
    var arg:String = "'a', 'b'";
    if (voiture.hasOwnProperty(functionName))
         var x:String = voiture[functionName](arg);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Par défaut
    Merci beaucoup, ça fonctionne.

    A noter pour ceux qui souhaitent utiliser cette méthode que si la fonction a plusieurs paramètres, il faut multiplier le paramètres arg autant que nécessaire. Ils ne peuvent entrer tous sur le même paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import libs.voiture;
     
    private function preinit():void
    {
    	voitureClass = new Voiture();
    }
     
    var functionName:String = "test";
    var arg1:String = "'a'";
    var arg2:String = "'b'";
    if (voitureClass .hasOwnProperty(functionName))
         var x:String = voitureClass [functionName](arg1, arg2);
    En tout cas, merci pour votre aide

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Par défaut
    Pour terminer, on peut aussi rendre le nom de la classe dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    import libs.voiture;
    private var classesDispo:Object = new Object();
     
    private function preinit():void
    {
    	classesDispo['Voiture'] = new Voiture();
    }
     
    var className:String = "Voiture";
    var functionName:String = "test";
    var arg1:String = "'a'";
    var arg2:String = "'b'";
    if (classesDispo[className].hasOwnProperty(functionName))
         var x:String = classesDispo[className][functionName](arg1, arg2);
    Encore merci,
    Vence

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel dynamique de fonction par char*
    Par Scorpi0 dans le forum C
    Réponses: 8
    Dernier message: 11/06/2008, 21h08
  2. [JavaScript] [FAQ] Appeler dynamiquement une fonction et passer une fonction en argument
    Par SpaceFrog dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/05/2008, 14h48
  3. Appeler dynamiquement une fonction javascript
    Par BigDozer dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 28/05/2008, 14h41
  4. [Framework] Appel dynamique de fonctions
    Par hdd dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 21/12/2006, 17h35
  5. Appel dynamique de fonctions
    Par smyley dans le forum MFC
    Réponses: 4
    Dernier message: 27/10/2005, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo