Flex / AS3:自动实例化数组中的包类(插件类)

时间:2009-12-07 19:17:33

标签: flex actionscript-3

这是我第一次来这里,但我已经在这里找到了一些好的答案,所以我要感谢大家。

我正在开发一个小型Flex应用程序,我希望将每个类从一个包实例化为一个数组,所以我可以在之后解析它。为了澄清,我正在尝试使用旧的canProcess / doProcess例程来简化我的应用程序的插件管理系统: 我的插件都在一个包中,包括一个抽象插件类。首先,我在这个包中创建了每个类的一个实例(这是我需要帮助的地方)并将它们放在一个数组中。然后,每当我需要一个项目的插件时,我用canProcess方法解析我的数组中的每个插件类(该项是参数)。如果一个插件说是,那么我将该项发送到doProcess方法并停止解析该数组。

我知道我可以手工实施我的包中的每个课程,但我不想打扰它。

有人有想法吗?

THX

1 个答案:

答案 0 :(得分:1)

AS3反射不允许您列出包中的所有类。您必须将类名写入服务器上的(xml)文件,加载它然后使用getDefinitionByName从这些字符串中获取Class个对象,然后实例化它们。

考虑示例xml文件:

<root package="boris.ratak">
  <className>Plugin1</className>
  <className>Plugin2</className>
  <className>Plugin3</className>
</root>

URLLoader加载它并解析它:

import flash.utils.getDefinitionByName;

var pack:String = String(xml.@package) + ".";
for each(var cl:String in xml.className)
{
   var name:String = pack + String(cl.text());
   var Type:Class = getDefinitionByName(name) as Class;
   pluginArray.push(new Type());
}