2010-08-16 12 views
1

Je suis en train de convertir une macro en C à quelque chose qui fonctionnerait de façon similaire dans Actionscript.Conversion C 3 macros pour Actionscript

La macro C prend une chaîne et en utilisant ## vérifie le type par rapport à d'autres macros pour vérifier que la propriété de l'élément est du bon type.

Pour clarifier les choses, le C:

... 
#define STACK_NUM  52 
... 
#define CHECK_TYPE(i, t)  \ 
(((i).type == t##_NUM))  \ 

Je suis en train de convertir en quelque chose du même en Actionscript. La façon actuelle que je fais est de créer une classe

public class StringMacro extends String { 
    public var macro:int; 

    public function 
    StringMacro(value:int) 
    { 
     super(); 
     macro = value; 
    } 
} 

et définir toutes les macros de C dans les variables de cette classe, mais cela prend une grande quantité d'espace et je ne veux vraiment pas faire par ici.

Alors, ce que je suis venu avec était quelque chose comme ceci:

public class Macros { 
    ... 
    public var STACK_NUM:uint = 52; 
    ... 

    public function 
    Macros() 
    { 
    } 

} 

Je veux faire référence à quelque chose comme la classe Macros faire:

private var macros:Macros = new Macros(); 
if(CHECK_TYPE(10, STACK))  
    .... 

private function 
CHECK_TYPE(value:int, t:String):Boolean 
{ 
    if(value == macros.(t)) { 
     return true; 
    } 
} 

donc je peux passer t dans la fonction et il va le vérifier parmi les définitions de la classe Macro.

Y at-il un moyen de faire ce travail ou quelque chose comme ça?

Répondre

2

Oui, vous pouvez accéder aux valeurs de cette façon, vous devez utiliser une syntaxe légèrement différente cependant.

DO:

macros[t] 

PAS:

macros.(t) 

Vous pouvez également envisager d'utiliser vars statiques pour cela, de sorte que vous ne devez pas créer une instance de la classe de macros. Si cela correspond à votre conception.

+0

Merci Tyler, l'idée var statique était la chose exacte que je avais besoin. – David