【问题标题】:Create instances of flex custom component by passing in type通过传入类型创建 flex 自定义组件的实例
【发布时间】:2010-11-14 20:27:41
【问题描述】:

在我的 flex 应用程序中有一些自定义组件。我想在运行时创建这些组件的实例,并通过读入配置文件来为其分配属性。 我知道如何读取 xml 和实例化组件,但是我的问题是能够 从 xml 属性中获取组件的类型,然后创建该类型的实例。 我的 xml 看起来像这样:

【问题讨论】:

  • 您的意思是回来发布 XML 吗?
  • 使用 xml 来配置你的组件可能是个坏主意,而且是你习惯的其他语言的保留。尝试以另一种方式做同样的事情。
  • 我有 xml。不知何故,它从我的帖子中消失了。

标签: apache-flex actionscript-3 mxml


【解决方案1】:

您可以通过 ActionScript 的“反射 API”实例化任意命名类型:

var clazz:Class = Class(getDefinitionByName("class.from.your.xml.file.Name"));
var component:Object = new clazz();

http://livedocs.adobe.com/flex/3/langref/flash/utils/package.html#getDefinitionByName()

如果您收到关于类型不存在的错误,这是因为它没有从应用程序的其他地方链接,并且编译器仅添加引用的类。您可以使用以下编译器 arg 解决此问题:

includes class [...]

将一个或多个类链接到生成的应用程序 SWF 文件,无论这些类在编译时是否需要。

http://livedocs.adobe.com/flex/3/html/compilers_14.html#157203

【讨论】:

  • 我最终将上述代码与将类传递给 ClassFactory 的实例结合使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-04
  • 2018-02-24
  • 2011-11-21
  • 2013-11-25
  • 2010-11-28
  • 2012-01-06
相关资源
最近更新 更多