Est-il possible d'utiliser la réflexion AS3 pour savoir si une méthode a été surchargée?Réflexion AS3. Comment savoir si une méthode est surchargée?
je besoin d'une méthode comme:
protected function isOverriden(methodName:string) : bool
{
//magic here!
//...
return awesomeLocalVariable;
}
Alors, je passe dans le nom de la méthode comme une chaîne et la méthode isOverridden cède vrai que si et seulement si l'objet a une méthode de ce nom et il est substitué de son implémentation d'origine.
Une idée sur la façon de coder la magie là-bas?
Merci.
Edit: Comme demandé, le contexte du problème:
Je construis un cadre pour la création de jeux AS3. Je veux fournir des "composants" pour mes objets de jeu, chaque composant fournit des fonctionnalités à l'objet de jeu auquel il est appliqué. Les composants sont basés sur des événements (onClick, onUpdate, onShapeCollision, etc.) J'ai besoin de ce code dans la classe Component, donc je ne peux enregistrer que les événements implémentés par la classe Component-derived (overrides).
composant Exemple:
public class CTrace extends ScriptComponent
{
public override function onClick(event:MouseEvent = null):void
{
trace(Owner.Id);
}
}
Le cadre devrait enregistrer la méthode onClick comme le gestionnaire d'événements pour l'événement MouseEvent.CLICK car il remplace l'implémentation par défaut. Pourquoi ai-je besoin de l'implémentation par défaut? Parce que je veux que les classes remplacent les méthodes prises en charge, il y aura donc une erreur de compilation si l'utilisateur essaie d'utiliser un événement non pris en charge.
Est-ce que cela a du sens?
Pourquoi avez-vous besoin? Pouvez-vous fournir un contexte? – jtbandes
D'accord. Je suis intéressé de voir quel problème cela résout. –
J'espère que cela l'explique. –