我正在AIR中编写一个移动应用程序,我经常遇到同样的问题:执行顺序是什么?我知道可以确定UI类的初始化,创建等的顺序。我也可以把跟踪语句放到每个类的构造函数中,并且这样做。但那很乏味。如何跟踪actionscript中的代码执行顺序?
是否有一个通用的代码段,每个类都会在加载时“宣告”自己?有没有人写过类似的东西?
伪代码会是这样的:
for each var class:Class in application
{
trace(class.getQualifiedClassName.toString();
}
感谢。
编辑:
下面是一个例子。我运行MyApp.mxml,并在其上放置跟踪语句。第一个视图是一个由数组填充的列表,该数组来自服务器,通过xml。但是当应用程序加载时,列表是空白的。为什么?由于事件的顺序如下,基于跟踪语句我手动插入:
MyApp::viewnavigatorapplication1_intitializeHandler firing
Model::initialize function firing
XMLLoader::going to http://mysite.com/myxml.xml
MyApp::addedToStageHandler running
HomeListView::viewActivateHandler firing
XMLLoader::xmlLoaded
的原因,该列表为空是后 HomeListView已经激活了XML被加载。所以,有一种方法可以获得所有这些信息,而无需在课后将其写在课堂上。注意并不是所有的类都在显示列表上(例如Model和XMLLoader)。
什么的执行顺序?你使用Flex吗?如果是这样,Flex组件LifeCycle将控制生命周期方法的执行顺序,您可能需要花一些时间阅读相关内容。我认为大多数课程 - 无论是否为Flex - 都将派发“addedToStage”事件。但是,我不清楚这种情况是否满足您对“负载”的定义。 – JeffryHouser
是的,使用Flex,是的,我了解LifeCycle - 这就是我的意思是'确定初始化的顺序'等。假设我有100个类。我问的是,如果有一种方法可以编写一行或几行代码,并让每个类都跟踪“我的构造函数正在运行!”而不是必须经过100次创建跟踪语句。这对于那些不在显示器上的类以及对那些类而言都是如此。 – David
您可以在AS3中创建一个全局变量,如下所示:http://stackoverflow.com/a/1860855/133840但我认为这不会满足您的需求。你几乎需要一个全局构造函数跟踪语句。您可能必须尽可能地在类层次结构中尽可能地修改该构造函数以添加代码。它可能涉及重新编译Flex框架。而且你必须为你所拥有的每个阶级层次做同样的事情;因为您将无法编辑主Flash“Object”类。我不确定这会起什么作用。 – JeffryHouser