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

Flash Discussion :

[FLASH MX] Problème d'envoi de fonction sur évenement


Sujet :

Flash

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [FLASH MX] Problème d'envoi de fonction sur évenement
    Bonjour à tous !

    Je suis en train de réaliser un appli de cartographie en flash et je bloque sur un problème qui doit probablement être tout bête.

    Tous mes éléments carto (polygones, symboles, lignes) sont stockés en base de données, sont téléchargés en XML, traités et affichés. Les évenements possibles sur chacun des objets sont aussi stockés en base. J'ai dans le code Actionscript une bibliothèque de fonctions qui peuvent être appellées par les evenements mais je dois leur envoyer l'identifiant de l'élément cliqué ou survolé.
    Je vais copier le code qui me pose problème, ca sera surement plus simple:

    lemv.onPress = eval(shapedef.onclick);

    Dans ce cas, "shapedef.onclick" vaut le nom de la fonction à appeller, mais ça ne marche que si le nom de la fonction est écrit sans paranthèses (ex: lemv.onPress = test --> OK par contre: lemv.onPress = test() --> fonctionne pas).
    Or, je dois envoyer à la fonction un paramètre qui est l'id de l'objet cliqué...

    Voilà mon problème, en espérant que ce soit assez clair !

    Cordialement,

  2. #2
    Membre actif Avatar de younes_
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 229
    Points : 265
    Points
    265
    Par défaut
    Je pense que pour ton cas, ça sera mieux d'utiliser la technique de délégation, pour déclencher l'évènement dispatcher à une autre fonction. La classe Delegate de macromedia ne permet de passage de paramètre mais tu peux utiliser la mienne si tu veux:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    /**
     *	Proxy event handler, acts like mx.utils.Delegate and compatible with MTASC compiler</p>
     *	
     *	@author	Younes younes@locobrain.com
     *	@version	1.0
     *	@since	2005/3/17
     * 
     * 	@credit http://blog.locobrain.com
     */
    class com.locobrain.events.EventDelegate {
     
     
    	private function EventDelegate () {}
    	/**
    	 *	Creates a functions wrapper that runs in the provided scope.
    	 * 	@usage	
    	 * 		<code>
    	 * 		EventDelegate.create (myObject, myEventHandler, param0,param1, [..])
    	 * 		</code>	
    	 *	@param	scope	Scope object which to run the function 
    	 *	@param	method	Function to run
    	 *	@return	Function wrapper
    	 */
    	public static function create (scope:Object, method:Function):Function {
     
    		var params:Array = arguments.splice (2, (arguments.length-2));
     
    		var proxyFunc:Function = function ():Void {
    			method.apply(scope, arguments.concat (params));
    		}
    		return proxyFunc;
    	}
    }
    Voici comment l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import  com.locobrain.events.EventDelegate;
    vat param1:Number = 1;
    lemv.onPress = EventDelegate.create(this,test,param1);
    voilà

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Version de flash
    Merci beaucoup pour ton post, mais ton code n'est (je pense) pas compatible avec la version 1 d'actionscript ? Je tourne avec flash MX v6.
    Si je me trompe, comment dois-je intégrer ta class au code ?

    Merci.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Version
    Si je passe sur une version plus récente de flash, est-ce que mon code AS1 sera compatible ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/05/2015, 16h33
  2. Problème d'envoi des données sur un fichier JSP
    Par demcoul dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/04/2012, 17h39
  3. Réponses: 1
    Dernier message: 18/10/2011, 20h27
  4. Problème d'envoie de document sur accés exterieur
    Par laetipouchoux dans le forum Installation
    Réponses: 1
    Dernier message: 14/04/2011, 16h37
  5. Problème d'envoi de fonction à un connect
    Par ganon551 dans le forum Qt
    Réponses: 1
    Dernier message: 13/05/2009, 18h36

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