as3commons在运行时生成函数调用

时间:2015-12-27 23:01:25

标签: actionscript-3 flash runtime generated-code opcodes

由于我在运行时生成一个类的原因,该类具有一个带有受保护成员的现有超类,并实现了一个现有的接口。接口的每个方法(和访问器)也需要生成。我正在捣乱的地方是用正确的操作码填充方法体。 以下是我想要生成或转换为操作码的示例:

public function myFunction(arg1:String, arg2:int):Boolean
{
    return member.my_namespace::myFunction(arg1, arg2);
}

所有信息都可用,例如函数名称,参数,返回类型和命名空间。我可以创建函数本身并返回默认值,如as3commons tests/examples

中所示

也许我应该使用另一个lib而不是as3commons?

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。我所缺少的是(正确)使用QualifiedName来访问成员及其功能。我只删除了命名空间。这就是我在模板代码中修改的所有内容:

replace(ADDRESSBLOCK,' ','') =
        replace(coalesce(@ADDR2_1, '') + CHAR(13) + CHAR(10) +
        coalesce(@ADDR2_2, '') + CHAR(13) + CHAR(10) +
        coalesce(@ADDR2_3, ''),' ',''))

以下是生成该函数所需的源代码,包括方法体的Opcodes:

public function myFunction(arg1:String, arg2:int):Boolean
{
    return member.myFunction(arg1, arg2);
}

我不保证代码有效。我在我自己的项目中用一些动态的东西和循环来调整它,它工作得非常好。 我使用的库(d)是:

  • as3commons-字节码1.1.1
  • as3commons琅0.3.7
  • as3commons测井-2.7
  • as3commons - 反射 - 1.6.4

全部在as3commons downloads

下提供