回答更一般的问题:导入是包含外部文件的首选方式。在我看来,该include
语句应该只在没有其他方法的情况下使用,因为如果出现问题,它会使调试变得更加困难,并且通常会使代码更难阅读和理解。阿萨夫对做什么import
和include
做什么的描述是正确的。
然后对于您似乎遇到的更具体的问题:您可能正在尝试
testing.init();
在块中做正确的事情<script>
-尝试将其放入方法中。您应该只import
在脚本块中直接包含语句和成员声明(变量、函数)之类的内容,以及在函数中包含这样的语句。
您会看到该错误消息,因为当您调用init()
此对象的方法时,它尚未创建——当您的 MXML 文件所代表的类的定义被加载时,该语句将被执行;您想要的是在创建此类的特定实例时执行它,并且您可以通过在类的构造函数中调用它来执行此操作(据我所知,这在您编写时是不可能的使用 MXML 的类,请继续阅读:)或例如在FlexEvent.CREATION_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>