2009-05-26 3 views
3

Y at-il un moyen de faire « getDefinitionByName() » fonctionne avec tout type d'objet, je n'ai eu à travailler avec une classe:AS3- Est-il possible d'appeler une variable à partir d'une chaîne?

var test:Class = getDefinitionByName("myClass") as Class; 

je besoin de quelque chose comme:

var myNumber:Number = 10; 
var test:Number = getDefinitionByName("myNumber") as Number; 

trace(test); //10 

Ou Y a-t-il une autre méthode pour y parvenir?

Répondre

3

Vous devez définir vos codes clés publiques statiques constantes dans votre classe keycodes:

class KeyCodes { 
    public static const A:int = 65; 
} 

Vous pouvez ensuite les utiliser comme arguments à votre fonction useKeyCodes:

useKeyCodes(KeyCodes.A); 

De cette façon, vous obtenir l'avantage de ne pas avoir à se rappeler chaque code clé.

+0

Ceci est une solution. En fait, l'une des choses, pourquoi les constantes elles-mêmes ont été inventées, est d'identifier des valeurs littérales comme PI ou KEY_UP etc, donc vous n'avez pas besoin de vous souvenir de sa valeur - juste un nom constant. Et pour les keycodes il y a une classe 'Key' (en savoir plus dans le manuel). – Jet

1

n °

C'est la réponse courte, getDefinitionByName obtient la définition de classe. Vous pouvez accéder aux champs publics et fonctionner avec la syntaxe [], comme dans trace(this["myNumber"]);. Votre exemple semble être avec une variable locale qui n'a vraiment pas de sens. Peut-être que vous pouvez expliquer ce que vous voulez faire, cela ressemble à quelque chose dont vous pouvez vous sortir.

+0

J'ai une classe de code clé qui est pleine d'entiers keyCode, je veux être en mesure d'y accéder à partir d'une autre classe, en utilisant une chaîne. classe keyCodes {public const A: int = 65; } class MaClasse { useKeyCodes fonction (key: String) {var codeTouche: int = keyCodes.getDefinitionByName (key) comme int; }} Je veux être en mesure d'ajouter de nouvelles clés pour l'écouteur d'événement clavier sans penser à des codes clés – RValentine

+1

: Utilisez cette obj.useKeyCodes (flash.ui.Keyboard.A); – Jet

Questions connexes