子类化组件隐藏基类可视元素。我如何实现可视继承?

时间:2011-04-01 21:33:44

标签: oop inheritance flex4

我有以下问题:

  • 我有一个A类,它扩展了s:Panel。
  • 我有一个扩展A

    的B类
    <!-- Class A -->
    <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" >
    
       <s:Label text="A" />
    </s:Panel>
    
    <!-- Class B -->
    <controls:A  >
       <s:Label text="B" alpha="0.3" />
    </controls:A>
    

我的直觉告诉我应该显示两个文本,但是我不能在A节目中制作文本。

感谢,

1 个答案:

答案 0 :(得分:0)

您不能将子项两次添加到UIComponent。因此,A类扩展了Panel,并在Panel实例中的children数组中添加了一个标签。 B延伸A,但你不能再添加更多的孩子。这只是MXML的限制。从理论上讲,你可以做到这一点,但是当你这样做时,Flex会抛出异常。

然而,有办法解决这个问题。在设计基类时,您必须在Flex中规划此类扩展。这指的是模板组件。基类将作为模板,允许子类指定UI的各个部分,基类将环绕这些组件。总的来说,我发现这种技术对于创建其他用户可以自定义的可重用视图非常重要。

查看这篇文章,了解如何执行此操作: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf68a49-7ffa.html

您甚至可以将元数据[DefaultProperty]元数据标记添加到基类中,这样您的用户就会像默认的MXML一样添加到子数组中。

http://dispatchevent.org/mims/flex-manual-blues/