如何从Actionscript 3中的函数外部检索函数或方法的参数/参数列表

时间:2013-10-24 20:12:42

标签: actionscript-3 flash actionscript introspection

在代码中的其他类中,我想访问Foo.bar的参数(及其类型)。 结果将以一种或另一种形式包含[ "a", Number ][ "b", String ]

public class Foo
{
    ...
    public function bar(a:Number, b:String):void
    {
        ...
    }
}

1 个答案:

答案 0 :(得分:4)

AS3有一个名为describeType

的方法

如果您在上面的示例中致电describeType(Foo),您将获得:

<type name="Foo" base="Class" isDynamic="true" isFinal="true" isStatic="true">
  <extendsClass type="Class"/>
  <extendsClass type="Object"/>
  <accessor name="prototype" access="readonly" type="*" declaredBy="Class"/>
  <factory type="Foo">
    <extendsClass type="Object"/>
    <method name="bar" declaredBy="Foo" returnType="void">
      <parameter index="1" type="Number" optional="false"/>
      <parameter index="2" type="String" optional="false"/>
      <metadata name="__go_to_definition_help">
        <arg key="pos" value="51"/>
      </metadata>
    </method>
    <metadata name="__go_to_definition_help">
      <arg key="pos" value="23"/>
    </metadata>
  </factory>
</type>

现在,您可以使用AS3的XML类和e4x来查找名称为bar的方法的定义,并获取parameter元素。