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

Flash Pascal Discussion :

Pour on contre le Sender ?


Sujet :

Flash Pascal

  1. #1
    Expert éminent sénior
    Pour on contre le Sender ?
    voici le problème:

    Sous ActionScript on utilise généralement des fonctions anonymes pour gérer les évènements:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    {
      Movie.onPress = function() {
      }
    }


    Sous FlashPascal j'ai voulu m'inspirer de Delphi et je n'ai pas autorisé les méthodes anonymes que je n'aime pas personnellement
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    type
      MovieClip = class ...
        property onPress: procedure of object;
      end;
     
    begin
      Movie.onPress := doPress;
    end;
     
    procedure MyMovie.doPress;
    begin
    end;


    par contre cette syntaxe gagnerait à avoir un paramètre Sender à la Delphi

    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
     
    type
      MovieClip = class ...
        property onPress: procedure(Sender: TObject) of object;
      end;
     
    begin
      Button1.onPress := doPress;
      Button2.onPress := doPress;
    end;
     
    procedure MyMovie.doPress(Sender: TObject);
    begin
      if Sender = Button1 then...
    end;


    L'équivalent ActionScript serait
    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
     
    {
      var self = this; // nécessaire pour référencer this dans la méthode anonyme
      Button1.onPress = function() {
        self.doPress(Button1);
      }
      Button2.onPress = function() {
        self.doPress(Button2);
      }
    }
     
    class Movie ...
      function doPress(Sender: Object) {
      }
    }


    L'autre solution serait d'autoriser les fonctions anonymes
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      Button1.onPress = procedure begin
        ...
      end;
      Button2.onPress = procedure begin
        ...
      end;


    Qu'en pensez-vous ?

    non c'est bien comme c'est
    il faut ajouter un Sender
    il faut autoriser les fonctions anonymes
    hein ?!
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    Membre expérimenté
    il faut ajouter un Sender.

  3. #3
    Rédacteur/Modérateur

    Citation Envoyé par Paul TOTH Voir le message
    Qu'en pensez-vous ?
    C'est gentil de demander notre avis.

    J'ai voté "peu m'importe", c'est-à-dire que je te suis.

    A propos d'ActionScript, franchement, je n'ai pas l'intention de m'y intéresser. Ce qui se passe entre mon code et le résultat final, je ne veux pas le savoir.

    "...with just some Pascal knowledge."

  4. #4
    Expert éminent sénior
    Citation Envoyé par Roland Chastain Voir le message
    C'est gentil de demander notre avis.

    J'ai voté "peu m'importe", c'est-à-dire que je te suis.

    A propos d'ActionScript, franchement, je n'ai pas l'intention de m'y intéresser. Ce qui se passe entre mon code et le résultat final, je ne veux pas le savoir.

    "...with just some Pascal knowledge."
    bon j'ai les yeux qui piquent mais j'ai trouvé une solution au problème du type "class.prop := autreClass.method"...mais comme ça chaque fois que je fais des modifications profondes sur le compilateur je relance la compilation de tous les projets démo...et là j'en ai deux qui ne fonctionnent plus ! donc je verrais plus tard, il est minuit par ici
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre expérimenté
    Ne te casse pas trop la tête, c'est un détail...
    On est obligé à chaque fois de tout reprendre pour les applications... C'est toi le chef, tu fais comme tu le sens. Ta décision sera la nôtre.

    @+

###raw>template_hook.ano_emploi###