2010-04-15 17 views
0

Je veux cloner un objet d'une classe (dont je n'ai pas le code source) et copier tous les gestionnaires d'événements associés de l'objet original vers le nouvel objet cloné. Est-ce que quelqu'un sait comment je peux faire ça? Je sais comment copier les propriétés de l'original au nouveau, mais puis-je parcourir tous les gestionnaires d'événements et les ajouter au nouvel objet?Actionscript 3 (Flex) - Comment cloner un objet, y compris la copie des gestionnaires d'événements/écouteurs?

Des idées?

Répondre

0

J'ai utilisé ObjectUtil.copy() pour cloner des objets avant, mais uniquement des objets de valeur simple. Selon le langref, il est uniquement destiné à des usages:

Cette méthode est conçue pour copier des objets de données, tels que des éléments d'une collection. Il n'est pas destiné à copier un objet UIComponent, tel qu'un contrôle TextInput. Si vous souhaitez créer des copies d'objets UIComponent spécifiques, vous pouvez créer une sous-classe du composant et implémenter une méthode clone() ou une autre méthode pour effectuer la copie.

Avez-vous essayé ObjectUtil.copy() et trouvé manque?

+0

La classe à laquelle je clone est une sous-classe de l'original, par ex. disons que j'ai un félin de classe et un tigre de classe qui hérite de Feline et ajoute juste un peu plus de capacités. Donc maintenant, à l'exécution, on me donne un objet félin et je veux créer un objet Tiger à partir de cet objet félin, comment faire pour que Tiger obtienne tous les objets félins, etc. J'ai essayé de faire quelque chose comme "super = felineObj" mais ne fonctionne pas. –

+0

Si les gestionnaires d'événements de Feline sont ajoutés dans un constructeur, vous pouvez les obtenir en appelant le constructeur de Feline dans le constructeur de Tiger (bien que si vous n'avez pas la source pour Feline, vous n'auriez aucun moyen de le savoir). Si copy() ne fonctionne pas, vous devrez probablement les ajouter manuellement. – houser2112

+0

Houser2112, merci pour votre réponse, il semble que je vais devoir les ajouter manuellement. Savez-vous comment je peux lister tous les eventhandlers pour un objet? –