【问题标题】:Classes must not be nested - MXML类不能嵌套 - MXML
【发布时间】:2010-01-07 23:05:01
【问题描述】:

我正在尝试构建一个简单的 FLEX 应用程序。不幸的是,我得到“1131:类不能嵌套。”即使使用简单的 MXML 也会出现错误 .... 错误在 mx:Application openning 标记处弹出: (如果重要,我会使用 PureMVC)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml"
        xmlns:view="icm.view.components.*"
    viewSourceURL="srcview/index.html"
    name="ICM"
    layout="absolute"
    > //FLEX BUILDER SAYS THE ERROR IS HERE


<mx:Script>
        <![CDATA[
        import mx.effects.easing.Exponential;
        import icm.ApplicationFacade;

        public static const NAME:String = "AppSkeleton";
        private var facade:ApplicationFacade = ApplicationFacade.getInstance(NAME);
        ]]>
</mx:Script>

    <mx:Move id="slideInEffect" yFrom="5000" easingFunction="{Exponential.easeOut}" duration="1300"/>
    <mx:Fade id="fadeOut" duration="1000" alphaFrom="1.0" alphaTo="0.0"/>
    <mx:Fade id="fadeIn" duration="1000" alphaFrom="0.0" alphaTo="1.0"/>

<mx:Style source="css/yflexskin.css" />

    <mx:Canvas id="mainViewStack" left="0" top="0" right="0" bottom="0" >
        <mx:ViewStack id="vwStack" left="0" top="0" right="0" bottom="0" resizeToContent="false" creationPolicy="auto">
            <mx:VBox />
            <view:SplashScreen id="splashScreen" showEffect="{slideInEffect}" hideEffect="{fadeOut}" />
            <view:LoginScreen id="loginScreen" showEffect="{fadeIn}" />
            <view:MainScreen id="mainScreen" showEffect="{fadeIn}" />
        </mx:ViewStack>
    </mx:Canvas>

</mx:Application>

有人能帮我理解为什么吗?我一直在做很多无意义的测试,因为我不理解它。 有时,如果我删除 Script 部分,编译会成功,其他的则不会。

谢谢

【问题讨论】:

  • 尝试仅使用 SDK 构建此文件并将确切的错误粘贴到此处(整个回溯)。
  • 如果我删除所有非 MXML 代码,我可以编译上面的代码;是否有一个类(ApplicationFacade)、样式表(flexskin.css)或组件(SplashScreen 等)的包含会触发错误?
  • 哎哟... 似乎是问题所在。为什么?对我来说太奇怪了。
  • 我偶尔会遇到这些错误,而清理通常可以解决问题。
  • 如果按照 James 的建议清理项目并不能解决问题,您可以发布该 css 文件吗?

标签: apache-flex puremvc


【解决方案1】:

谢谢大家的cmets。

本主题的最大提示是:使用 SDK 构建!!!

Flex Builder(包括 IDE 和插件)似乎缺乏很多错误处理功能,即使它报告错误也不可靠。

与IDE一起使用的编译提示窗口为我省去了很多麻烦。

再次感谢大家!

【讨论】:

    【解决方案2】:

    我使用编译器选项排除/包含一些代码时遇到了这个问题 喜欢-define+=CONFIG::myOption,true 当该选项为真时(导致包括某个代码),并且您的代码中有这样的信息:

    CONFIG::myOption {
        import <a package>;
    }
    

    这将导致 1131 错误...我没有解决方法,但没有使用此类条件编译指令。

    【讨论】:

      【解决方案3】:

      有一个 flex 编译器选项“启用严格类型检查”只需取消选择它。我认为这可以给出一个简单的解决方案....

      【讨论】:

        【解决方案4】:

        http://blog.gigantt.com/2011/02/how-to-build-flex-sdk.html

        建筑 让我们创建一个批处理文件来设置一些有用的 envar:envars.bat

              set JAVA_HOME=c:\Program Files\Java\jdk1.6.0_23
              set PATH=c:\dev\ant\bin;%PATH%
              set ANT_OPTS=-Xmx256m
        

        打开 cmd.exe 并运行它... 编辑 c:\dev\sdk\frameworks\build.xml 寻找: 并从以下位置修复清单文件的位置: "${datavis.dir}/manifest.xml" 到: “${datavis.dir}/manifest_datavisualization.xml” 运行 Ant:c:\dev\sdk\frameworks> ant 它应该以这样的消息结束:BUILD SUCCESSFUL 现在让我们告诉 Flash Builder 在哪里可以找到这个新的 SDK:c:\dev\sdk 将其添加到 Flash Builder 中的“已安装 SDK”设置中 确保您的项目配置为使用此 SDK(它可能是使用原始 SDK 创建的,并且仍然引用它)。 重建你的项目。它应该可以工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多