Apache flex 在flex应用程序中包含外部actionscript文件的最佳实践是什么

Apache flex 在flex应用程序中包含外部actionscript文件的最佳实践是什么,apache-flex,class,actionscript,include,Apache Flex,Class,Actionscript,Include,如果在flex mxml文件中包含外部actionscript文件,则编译时会根据使用的方法获得不同的行为。使用带有源属性或include语句的mx脚本标记,然后编译文件会出现以下错误: 错误:包不能嵌套 如果使用import,这些错误就会消失,文件也会编译,但是我在尝试实例化类时遇到了问题 import lib.journal; public var testing:journal = new journal(); testing.init(); 其中: 错误:访问未

如果在flex mxml文件中包含外部actionscript文件,则编译时会根据使用的方法获得不同的行为。使用带有源属性或include语句的mx脚本标记,然后编译文件会出现以下错误:

错误:包不能嵌套

如果使用import,这些错误就会消失,文件也会编译,但是我在尝试实例化类时遇到了问题

    import lib.journal;
    public var testing:journal = new journal();
    testing.init();
其中:

错误:访问未定义的属性测试

有人能解释一下这是怎么回事吗?包含文件而不是导入文件对包和范围有什么影响


谢谢,

导入允许您访问导入文件的公共声明

Include将as3文件的内容放入Include位置,就像在那里键入一样


请参阅上的手册。

导入允许您访问导入文件的公共声明

Include将as3文件的内容放入Include位置,就像在那里键入一样


请参阅上的手册以回答更一般的问题:导入是包含外部文件的首选方式。在我看来,include语句应该只在没有其他功能的情况下使用,因为如果出现错误,它会使调试变得更困难,并且使代码通常更难阅读和理解。阿萨夫对导入和包含的描述是正确的

还有一个更为具体的问题:你可能正试图做同样的事情 testing.init;就在块中-尝试将其放入方法中。您应该只包含诸如导入语句和成员声明变量、脚本块中直接包含的函数以及函数中类似的语句之类的内容

您看到该错误消息是因为当您调用该对象的init方法时,它还没有被创建-该语句将在您的MXML文件所代表的类的定义被加载时执行;你想要的是在这个类的一个特定实例被创建时执行它,你可以通过在类的构造函数中调用它来实现这一点,据我所知,在使用MXML编写类时是不可能的,因此,请继续阅读:例如,在FlexEvent.CREATION\u COMPLETE或creationComplete的处理程序函数中,在MXML标记属性事件方面,请参见下面的示例

试着这样做:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml"
    width="800" height="600"
    creationComplete="creationCompleteHandler();"
>
    <mx:Script>
        <![CDATA[

        import lib.Journal;

        public var testing:Journal = new Journal();

        private function creationCompleteHandler():void
        {
            testing.init();
        }

        ]]>
    </mx:Script>

</mx:Application>

回答更一般的问题:导入是包含外部文件的首选方式。在我看来,include语句应该只在没有其他功能的情况下使用,因为如果出现错误,它会使调试变得更困难,并且使代码通常更难阅读和理解。阿萨夫对导入和包含的描述是正确的

还有一个更为具体的问题:你可能正试图做同样的事情 testing.init;就在块中-尝试将其放入方法中。您应该只包含诸如导入语句和成员声明变量、脚本块中直接包含的函数以及函数中类似的语句之类的内容

您看到该错误消息是因为当您调用该对象的init方法时,它还没有被创建-该语句将在您的MXML文件所代表的类的定义被加载时执行;你想要的是在这个类的一个特定实例被创建时执行它,你可以通过在类的构造函数中调用它来实现这一点,据我所知,在使用MXML编写类时是不可能的,因此,请继续阅读:例如,在FlexEvent.CREATION\u COMPLETE或creationComplete的处理程序函数中,在MXML标记属性事件方面,请参见下面的示例

试着这样做:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml"
    width="800" height="600"
    creationComplete="creationCompleteHandler();"
>
    <mx:Script>
        <![CDATA[

        import lib.Journal;

        public var testing:Journal = new Journal();

        private function creationCompleteHandler():void
        {
            testing.init();
        }

        ]]>
    </mx:Script>

</mx:Application>
试试这个:

<mx:Script>
    <![CDATA[

    import lib.Journal;

    public var testing:Journal;

    private function creationCompleteHandler():void
    {
        testing = new Journal();
    }

    ]]>
</mx:Script>
干杯, 德克

试试这个:

<mx:Script>
    <![CDATA[

    import lib.Journal;

    public var testing:Journal;

    private function creationCompleteHandler():void
    {
        testing = new Journal();
    }

    ]]>
</mx:Script>
干杯,
德克

谢谢你的回答,但这并不能回答我的问题。我已经看过你贴的链接好几次了。上面的代码有问题吗?为什么我会出现这些错误?谢谢你的回答,但这并不能回答我的问题。我已经看过你贴的链接好几次了。上面的代码有问题吗?为什么我会犯这些错误?谢谢。这更有道理。但是,我现在遇到了一个错误:通过静态类型journal的引用调用一个可能未定义的方法init。请确保您的journal类有一个具有该名称的公共函数,并将其保存在名为journal的文件中。例如,在路径project root/lib/中,project root是指向项目目录结构根目录的路径,如果在使用之前总是需要调用init,那么可以在Journal类的构造函数中执行init操作。谢谢。这更有道理。然而,我现在得到了一个错误:通过调用一个可能未定义的方法init
静态类型为journal的引用。请确保您的journal类具有该名称的公共函数,并将其保存在名为journal.as的文件中,路径为project root/lib/其中project root是指向项目目录结构根目录的路径。此外,如果在使用之前始终需要调用init,您可以在Journal类的构造函数中执行init操作。