Apache flex Flex 4:无法为扩展组的类的子类定义s:布局

Apache flex Flex 4:无法为扩展组的类的子类定义s:布局,apache-flex,actionscript-3,flex4,Apache Flex,Actionscript 3,Flex4,我试图通过扩展Flex4中的组来为组件创建基类,但我似乎无法通过MXML定义布局。每当我尝试将定义移动到我的基本组件的子类时,都会出现以下错误: Error: Could not resolve <s:layout> to a component implementation. 从这个错误判断,似乎框架方面的一些魔法用于为一个组分配它,因此编译器在尝试为任何其他类分配它时失败。有人知道这是怎么回事吗?知道如何在子类中定义它吗?您必须使用子类的名称空间 而不是 <s:layou

我试图通过扩展Flex4中的组来为组件创建基类,但我似乎无法通过MXML定义布局。每当我尝试将定义移动到我的基本组件的子类时,都会出现以下错误:

Error: Could not resolve <s:layout> to a component implementation.

从这个错误判断,似乎框架方面的一些魔法用于为一个组分配它,因此编译器在尝试为任何其他类分配它时失败。有人知道这是怎么回事吗?知道如何在子类中定义它吗?

您必须使用子类的名称空间

而不是

<s:layout>
例如,如果包/名称空间定义为customComp,请使用

<customComp:MyTestComponent id="aaa">
    <customComp:layout>
      <customComp:VerticalLayout />
    </customComp:layout>

    <Button id=.... />
    <Button id=.... />

</customComp:MyTestComponent>

您必须使用子类的名称空间

而不是

<s:layout>
例如,如果包/名称空间定义为customComp,请使用

<customComp:MyTestComponent id="aaa">
    <customComp:layout>
      <customComp:VerticalLayout />
    </customComp:layout>

    <Button id=.... />
    <Button id=.... />

</customComp:MyTestComponent>

这是正确的做法,;所以+1。然而,由于VerticalLayout实际上引用spark命名空间中的类;我认为您必须在该行中指定“s”;即使使用MXML定义布局属性的组件引用组件的名称空间。第二种选择是使用ActionSript。我不太明白为什么它会这样,或者它是如何工作的,但它确实能工作。所以,非常感谢你,好先生这是正确的做法,;所以+1。然而,由于VerticalLayout实际上引用spark命名空间中的类;我认为您必须在该行中指定“s”;即使使用MXML定义布局属性的组件引用组件的名称空间。第二种选择是使用ActionSript。我不太明白为什么它会这样,或者它是如何工作的,但它确实能工作。所以,非常感谢你,好先生