这是一个有点疯狂的问题,但是那里的任何人都知道如何在flex编译器中编写额外的编译步骤。我们的想法是MXML编译器会像现在这样将MXML转换为AS3代码,但我们在AS3代码和字节码之间有一个额外的步骤。
我之所以要问,这是处理元数据标签以改变代码的一个很好的步骤。许多框架中的常见做法是在变量之前使用[Inject]标记。即[Inject] public var user:IUser。
真正的,非常酷的是,如果注入标签可以被识别,以某种方式解释,然后硬连线到单身,或者其他什么。例如,您可以使用一个配置文件将IUser定义为User对象。编译器会解释它,并将[Inject] public var user:IUser替换为public var user:IUser = UserConfig.instance.user;
如果我知道如何执行此步骤,这将是许多可能的事情之一。我只是想知道是否有人知道如何开始如何去做这件事。
答案 0 :(得分:0)
这是一个广泛的问题,但我可以为您的具体案例考虑答案。
您需要编写接受字节码作为输入的代码,并输出字节码:
[Injected]
元数据的特征。UserConfig.instance.user
要集成到您的构建过程中,您需要添加一个新的程序构建器(假设您正在使用Flash Builder),该构建器在 Flex 之后运行。
另外两种方式是:
答案 1 :(得分:0)
编译器是开源的,代码库中有很多例子,说明编译器如何在编译时修改抽象语法树(源代码被解析为)。
我建议看一下[Embed]或[SkinPart]扩展程序。 (我之前已经讨论了这个例子here的链接。)
但要注意 - 这些东西不适合胆小的人。如果您不熟悉编译器及其工作原理,我强烈推荐this book on ANTLR,它将对源代码解析为AST的过程进行全面概述,然后解释它们的解释方式。