3

上下文: 我正在使用 ActionScript 3 在 Flash CS6 中创建一个组件。我使用了一个扩展UIComponent的自定义类。当我在场景中拖动组件时,我在 Flash 中的组件参数中有一些属性值。我用

[Inspectable(name="ParamName", type="String", defaultValue="some_param_value")]

我有一个属性是列表。

[Inspectable(name="My List", type="List", defaultValue="One", enumeration="One,Two,Three")]

问题 我可以用我通过 Web 服务在数组中收集的值填充列表吗?我说的是枚举属性。

我真的需要完成这项工作,所以如果在技术上不可行,我该如何构建我的组件?

在此先感谢您的每一个想法、建议或提示!

4

1 回答 1

1

可检查的元数据标签旨在向编译器提供信息,描述您的组件在应用程序中的使用方式。

这些编译时指令在运行时永远不会被解释。

由类定义描述,这些属性不是动态的。

<type name="X" base="Class" isDynamic="true" isFinal="true" isStatic="true">
  <extendsClass type="Class"/>
  <extendsClass type="Object"/>
  <accessor name="prototype" access="readonly" type="*" declaredBy="Class"/>
  <factory type="X">
    <extendsClass type="flash.events::EventDispatcher"/>
    <extendsClass type="Object"/>
    <implementsInterface type="flash.events::IEventDispatcher"/>
    <variable name="listOptions" type="Array">
      <metadata name="Inspectable">
        <arg key="name" value="My List"/>
        <arg key="type" value="List"/>
        <arg key="defaultValue" value="One"/>
        <arg key="enumeration" value="One,Two,Three"/>
      </metadata>
    </variable>

此外,在 Flash Pro 的画板上创作时应用程序域和网络调用可能会出现问题;不过,我开发了一个谷歌地图组件,它能够在创作时调用加载地图。

虽然是学术性的,但这似乎是对这个标签的不恰当使用。此实现通常用于组件的静态选项。

这只能通过自动生成类定义的自动化过程来完成。

例如,您可以调用一个服务,该服务编写填充了可枚举值的 ActionScript 类文件。然后,自动构建推送新的编译组件以进行更新。

除了编译的程序集之外,没有办法实时动态更新这些定义。

于 2012-11-09T19:40:39.363 回答