2011-10-29 165 views
0

我有一个很棒的web应用程序。我现在正在尝试制作供我们内部使用的桌面版本。我已经转换它并将标签更改为“WindowedApplication”。当我尝试运行AIR应用程序出现错误:ArgumentError:未定义状态'normalAndInactive'

ArgumentError: Undefined state 'normalAndInactive'. 
at mx.core::UIComponent/getState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:10596] 
at mx.core::UIComponent/findCommonBaseState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:10616] 
at mx.core::UIComponent/commitCurrentState()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:10370] 
at mx.core::UIComponent/commitProperties()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:8294] 
at spark.components.supportClasses::GroupBase/commitProperties()[E:\dev\4.5.1\frameworks\projects\spark\src\spark\components\supportClasses\GroupBase.as:1128] 
at spark.components::Group/commitProperties()[E:\dev\4.5.1\frameworks\projects\spark\src\spark\components\Group.as:886] 
at mx.core::UIComponent/validateProperties()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\core\UIComponent.as:8209] 
at spark.components::Group/validateProperties()[E:\dev\4.5.1\frameworks\projects\spark\src\spark\components\Group.as:864] 
at mx.managers::LayoutManager/validateProperties()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:597] 
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:783] 
at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180] 

我没有在我的应用程序一个“normalAndInactive”状态。我试图在我的应用程序中放入一个,但没有做任何事情。我究竟做错了什么?

编辑:我发现了一些信息。在调试模式,错误指向我自定义的背景皮肤,主要内容如下:

<?xml version="1.0" encoding="utf-8"?> 
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark"> 

<fx:Metadata> 
    [HostComponent("spark.components.Application")] 
</fx:Metadata> 

<s:states> 
    <s:State name="normal" /> 
    <s:State name="disabled" /> 
</s:states> 

<!-- Define a gradient fill for the background of the Application container. -->  
<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0"> 
    <s:fill> 
     <s:SolidColor color="#FFFFFF" alpha=".25" /> 
    </s:fill> 

</s:Rect> 

<s:Group id="contentGroup" left="0" right="0" top="0" bottom="0" /> 
</s:Skin> 

回答

3

当创建一个组件的外观类(在这种情况下,WindowedApplication)你的皮肤类必须实现所有国家的组件类期望。在这种情况下,disabledAndInactive和normalAndInactive是你没有实现的两个。 See the full list

通过增加这些国家对您的皮肤类修正错误:

<s:states> 
    <s:State name="normal" /> 
    <s:State name="disabled" /> 
    <s:State name="normalAndInactive " /> 
    <s:State name="disabledAndInactive " /> 
</s:states> 

无论任何更多的是实现状态的或不是没有多大意义。

+0

THX!有趣的是,当我制作桌面应用程序时,我只会遇到错误。 –

+0

@ user522962在Web应用程序中;您的顶级应用程序很可能是未定义normalAndInactive或disabledAndInactive的外观状态的Application标记。因此,如果这些状态没有定义,Web应用程序不会抛出错误。 – JeffryHouser

0

用这一个,而不是

<s:states> <s:State name="normal" /> 
    <s:State name="disabled" stateGroups="disabledGroup" /> 
    <s:State name="normalAndInactive" stateGroups="inactiveGroup" /> 
    <s:State name="disabledAndInactive" stateGroups="disabledGroup, inactiveGroup" /> 
</s:states> 
+0

这会完成什么? – JeffryHouser