La création d'une coutume trace() de la classe en AS3
J'ai eu cette idée d'élargir mes trace() messages.
Pourquoi
trace() est partout dans mon code, je veux les activer/désactiver par une commande simple et peut-être ajouter une sorte de priorité à la fonctionnalité de la fonction trace(), c'est à dire
myTrace.TraceMsg("loosehere",debugme, 0);
myTrace.TraceMsg("winhere",debugme, 1);
Et quand je le lance, seul celui avec la plus grande priorité, "1" dans ce cas, spectacles.
Il y a beaucoup plus de fonctionnalités, je voudrais ajouter que, comme les messages de journalisation dans un fichier et ainsi de suite.
Problème
Comment faire trace ()? -Est-il possible de surcharger la fonction trace() en quelque sorte? -Comment pourrais-je mettre en œuvre la coutume TraceMsg(ce code ici?) méthode?
Ayant des problèmes graves de trouver des infos sur ce sujet sur notre moteur de recherche favori, de sorte que toute aide serait appréciée.
OriginalL'auteur Daniel Magnusson | 2009-04-03
Vous devez vous connecter pour publier un commentaire.
trace()
lui-même est une fonction de haut niveau, pas une classe, donc, malheureusement, nous ne pouvons pas nous étendre. Cela étant dit, nous pouvons l'utiliser dans une classe simple de faire exactement ce qu'il fait normalement, seulement dans ce cas, la trace est basée sur des conditions (c'est à dire Boolean - true|false, etc). Nous avons d'abord créer la Trace de la classe, ce qui nous n'aurions pas instancier nous parce que nous sommes en utilisant une Usine modèle de conception par le biais de la classe ci-dessous, Traceur. Traceur est construit autour du modèle de conception singleton, mais utilise le modèle de Fabrique pour instancier les instances de Trace, lorsque la méthode trace de Traceur est appelé.Garder à l'esprit que c'est au large de la hanche et pourrait très bien avoir un bug ou deux, mais l'idée est là; C'est-à-dire que ce n'est pas testé, c'est simplement pour vous donner une idée de la façon dont vous pourriez le mettre en œuvre.
J'espère que cette aide.
OriginalL'auteur Brian Hodge
Je suis venu avec une assez efficace, mais fastidieuse façon d'utiliser mon propre fonction trace() dans Flash seulement des projets, mais en l'appelant simplement avec
J'ai essentiellement de mettre en œuvre une méthode trace() dans toutes les classes de mon projet, qui appelle une fonction publique (alors que je peux appeler la véritable fonction trace() à partir de là.
voici ce que je fais : dans chaque classe, j'appelle cela du
dans le .comme le fichier est une méthode simple de mise en œuvre (ce pourrait être une méthode statique trop).
et la myTrace fonction est définie dans son propre myTrace.en tant que fichier
alors maintenant, quand je compile avec "omettre les actions trace", toute ma mise au point est ignoré comme si j'ai utilisé la fonction trace() tout simplement.
le très bon est ici que vous pouvez mettre en œuvre des actions personnalisées en fonction des instructions que vous donnez dans la trace, donc :
puis c'est l'expédition à partir de myTrace, ou un Traceur de la classe ou de quoi que ce soit 🙂
Espère que cela aide les futurs traceurs.
OriginalL'auteur Boris
Regarder le Flex la journalisation API, en particulier la section: la mise en Œuvre d'une coutume logger avec l'API de journalisation.
Chercher le
TraceTarget
classe.OriginalL'auteur dirkgently
Vous ne pouvez pas remplacer
trace
lui-même, mais pour la facilité de frappe je voudrais créer une fonction globale appelée "tr". C'est un fait peu connu que vous pouvez créer des fonctions globales en AS3, mais c'est facile.Créer un fichier appelé
tr.as
à l'intérieur de vous principale source de répertoire (pas dans un sous-répertoire ou package), ayant le contenu suivant:Si vous avez besoin d'avoir beaucoup de logique ou de stockage statique des variables etc, il pourrait être préférable de faire un distinct statique de la classe, et ont le global tr appel de fonction à cela, comme par exemple:
OriginalL'auteur davr
Ici est super simple trace personnalisé fonction que j'utilise. debugFlag peut être défini à true/false
ailleurs dans le package.
public static function myTrace(... vars) :void {
}
OriginalL'auteur
En AS2, il était possible de remplacer le trace de la fonction en faisant quelque chose comme ceci (prises à partir de la mémoire, peut-être un peu de mal, mais l'essentiel est là):
Malheureusement, je n'ai pas trouvé un moyen de faire la même chose en AS3. Encore.
OriginalL'auteur Marcus Stade
Trace est une fonction de haut niveau, de sorte que vous ne pouvez pas le remplacer, et autant que je sache, il ne déclenche pas tous les événements. Puisque c'est une fonction de haut niveau (qui n'est pas contenue dans un nom de paquet), vous pouvez l'utiliser sans déclarations d'importation.
Voici un exemple d'un haut niveau de "Traceur" de classe que vous pouvez utiliser à la place de trace, sans déclarations d'importation.
Appelez simplement de "Traceur.écrire" ou de "Traceur.writeError" pour le traçage des objets d'Erreur.
"Traceur.écrire" accepte un nombre variable d'arguments, tout comme le construit en fonction de trace. "Traceur.writeError" est une méthode d'assistance qui vous permet de trouver facilement les objets d'Erreur.
Caractéristiques:
-Tracer la définition de la classe
-TracerEvent définition de la classe
OriginalL'auteur Triynko
Comme mentionné ci-dessous, il n'y a aucun moyen de remplacer trace (au moins pas si vous voulez que vos traces pour atteindre le flux de sortie), mais c'est en fait très facile de créer votre propre universellement accessibles fonction de journalisation. De Plus, vous pouvez même définir universellement accessible booléen pour activer la journalisation sur on ou off:
journal.comme (notez que le nom de fichier doit refléter le nom de la fonction)
logEnabled.comme (notez que le nom de fichier doit refléter le nom de la variable)
Principal.comme
Réponse
OriginalL'auteur Simon
vous n'avez pas besoin de le remplacer , il suffit de créer une fonction dans votre projet et appel il trace ensuite toute trace appel point à ce.trace 😉
OriginalL'auteur Fareed Alnamrouti