Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 有没有办法真正扩展Flex组件?_Apache Flex_Actionscript 3_Inheritance_Mxml - Fatal编程技术网

Apache flex 有没有办法真正扩展Flex组件?

Apache flex 有没有办法真正扩展Flex组件?,apache-flex,actionscript-3,inheritance,mxml,Apache Flex,Actionscript 3,Inheritance,Mxml,我需要创建Flex组件的扩展,这(显然)意味着无论何时使用父组件,都应该能够使用新组件。但是我看不出有什么办法,Flex提供了两种扩展组件的方法,一种是定义一个扩展父组件的AS类,另一种是创建一个使用父组件作为根元素的MXML文件;在这两种情况下,我不能像配置父元素那样使用嵌套元素来配置子元素 例如 这是有效的MXML <mx:AdvancedDataGrid> ... <mx:columns> ... <mx:FixedDataGrid>

我需要创建Flex组件的扩展,这(显然)意味着无论何时使用父组件,都应该能够使用新组件。但是我看不出有什么办法,Flex提供了两种扩展组件的方法,一种是定义一个扩展父组件的AS类,另一种是创建一个使用父组件作为根元素的MXML文件;在这两种情况下,我不能像配置父元素那样使用嵌套元素来配置子元素

例如

这是有效的MXML

 <mx:AdvancedDataGrid>

...

    <mx:columns>

...
<mx:FixedDataGrid>
...
<mx:columns>
...

...
...
这是无效的MXML

 <mx:AdvancedDataGrid>

...

    <mx:columns>

...
<mx:FixedDataGrid>
...
<mx:columns>
...

...
...

它似乎不是有效的is-a关系。

您的FixedDataGrid与mx组件不在同一命名空间中

您需要指定正确的命名空间才能使其合法

<mx:Application xmlns:components="components.*" ... >
<components:FixedDataGrid>
    ....

....

您执行的mxml等效于在组件包中声明组件,然后抱怨无法将其引用为mx.controls.FixedDataGrid

您的FixedDataGrid与mx组件不在同一命名空间中

您需要指定正确的命名空间才能使其合法

<mx:Application xmlns:components="components.*" ... >
<components:FixedDataGrid>
    ....

....

您执行的mxml等效于在组件包中声明组件,然后抱怨无法将其引用为mx.controls.FixedDataGrid

当通过新的MXMLtag定义属性时,必须在与标记相同的命名空间中指定属性包含

所以你可以这样做:

<myComp:FixedDataGrid columns="SomeArray">

没有任何问题。如果使用MXML标记语法定义columns数组属性,则需要执行以下操作:

<myComp:FixedDataGrid >
 <myComp:columns>
  <mx:AdvancedDataGridColumn />
  <mx:AdvancedDataGridColumn />
 </myComp:columns>
</myComp:FixedDataGrid >

是AdvancedDataGrid上的属性,因此必须在与AdvancedDataGrid的自定义扩展相同的命名空间中定义。是另一个组件,因此它将在mx命名空间中定义


正如另一张海报所提到的,“myComp”名称空间必须在应用程序的顶级组件中定义。大多数情况下,Flash Builder会自动为您添加名称空间

通过新的MXMLtag定义属性时,必须在与标记相同的命名空间中指定属性包含

所以你可以这样做:

<myComp:FixedDataGrid columns="SomeArray">

没有任何问题。如果使用MXML标记语法定义columns数组属性,则需要执行以下操作:

<myComp:FixedDataGrid >
 <myComp:columns>
  <mx:AdvancedDataGridColumn />
  <mx:AdvancedDataGridColumn />
 </myComp:columns>
</myComp:FixedDataGrid >

是AdvancedDataGrid上的属性,因此必须在与AdvancedDataGrid的自定义扩展相同的命名空间中定义。是另一个组件,因此它将在mx命名空间中定义


正如另一张海报所提到的,“myComp”名称空间必须在应用程序的顶级组件中定义。大多数情况下,Flash Builder会自动为您添加名称空间

对不起,我只是没有准确地复制我的代码。实际上我有xmlns:custom=“components.*”,但这并不能解决问题。您对列有问题吗?它们需要与它们的父项存在于同一名称空间中,这样它们就会被声明为抱歉,我只是没有准确地复制我的代码。实际上我有xmlns:custom=“components.*”,但这并不能解决问题。您对列有问题吗?它们需要与它们的父项存在于同一名称空间中,以便将它们声明为感谢!你的回答很有帮助,解决了问题。谢谢!你的回答很有帮助,解决了问题。