Apache flex 有没有办法真正扩展Flex组件?
我需要创建Flex组件的扩展,这(显然)意味着无论何时使用父组件,都应该能够使用新组件。但是我看不出有什么办法,Flex提供了两种扩展组件的方法,一种是定义一个扩展父组件的AS类,另一种是创建一个使用父组件作为根元素的MXML文件;在这两种情况下,我不能像配置父元素那样使用嵌套元素来配置子元素 例如 这是有效的MXMLApache 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>
<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.*”,但这并不能解决问题。您对列有问题吗?它们需要与它们的父项存在于同一名称空间中,以便将它们声明为感谢!你的回答很有帮助,解决了问题。谢谢!你的回答很有帮助,解决了问题。