这是我第一次来这里,但我已经在这里找到了一些好的答案,所以我要感谢大家。
我正在开发一个小型Flex应用程序,我希望将每个类从一个包实例化为一个数组,所以我可以在之后解析它。为了澄清,我正在尝试使用旧的canProcess / doProcess例程来简化我的应用程序的插件管理系统: 我的插件都在一个包中,包括一个抽象插件类。首先,我在这个包中创建了每个类的一个实例(这是我需要帮助的地方)并将它们放在一个数组中。然后,每当我需要一个项目的插件时,我用canProcess方法解析我的数组中的每个插件类(该项是参数)。如果一个插件说是,那么我将该项发送到doProcess方法并停止解析该数组。
我知道我可以手工实施我的包中的每个课程,但我不想打扰它。
有人有想法吗?
THX
答案 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());
}