我是flex和actionscript的新手。我想知道移动应用程序何时启动,调用这些方法的顺序是什么,以及它们实际上分别执行的操作是什么。我对这些功能感到困惑:creationComplete,activate,viewActivate和addedToStage用于启动应用程序并停用ViewDeactivate以关闭应用程序。
以下是我为测试而编写的代码。
<?xml version="1.0" encoding="utf-8"?>
<s:View viewDeactivate="viewDeactivate()"
deactivate="deactivate()"
addedToStage="addedToStage()"
viewActivate="viewActivate()"
activate="activate()"
creationComplete="init()"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:flextras="http://www.flextras.com/mxml">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
private function viewDeactivate():void{
trace("viewDeactivate");
}
private function deactivate():void{
trace("deactivate");
}
private function addedToStage():void{
trace("addedToStage");
}
private function viewActivate():void{
trace("viewActivate");
}
private function init():void{
trace("creationComplete");
}
private function activate():void{
trace("activate");
}
]]>
</fx:Script>
我只是在Android手机上运行它,第一次运行并关闭它时,显示:
creationComplete
viewActivate
addedToStage
viewDeactivate
deactivate
然后我一次又一次打开并关闭它,它总是显示:
viewActivate
activate
viewDeactivate
deactivate
viewActivate
activate
viewDeactivate
deactivate
只有当我使用Android系统设置“强制关闭”应用程序时,我才会运行它,它会再次显示:
creationComplete
viewActivate
addedToStage
viewDeactivate
deactivate
所以有人知道为什么我第一次运行它时只显示“viewActivate”但没有“激活”,而且当我运行它时,它会显示两者但是错过了“addedToStage”和“creationComplete”?任何人都可以告诉我这些功能用于什么?他们实际做了什么?为什么序列显示那样?也有人知道“激活”和“viewActivate”以及“停用”和“viewDeactivate”之间的区别是什么?
谢谢!
答案 0 :(得分:2)
activate
事件继承自EventDispatcher(播放器运行时中存在的事件调度类的默认实现)。如果希望能够分派事件,则该类通常由其他类扩展。调度此特定事件"when the Flash Player or AIR application gains operating system focus and becomes active"请注意,它是一个广播类型事件,这意味着您不需要侦听任何特定的调度程序,而是在任何现有侦听器上调用它。
addedToStage
已发送when the listener is added to display list(其stage
,parent
和loaderInfo
等属性已填充,并且可能会开始接收互动事件,例如鼠标事件,触摸事件等。)这是所有显示对象可用的基础事件之一。
viewActivate
特定于继承自spark.components.View
的类调度的移动设备事件。到目前为止,据我所知,一旦视图(发送它)变得对用户可见,它就会被调度。
creationComplete
是Flex框架事件的特定内容。它将由上面提到的View类调度,因为它是UIComponent的扩展,它是Flex框架的核心组件。调度此事件once all of the components properties declared in MXML template were set,组件完成验证周期,布局等。
最不幸的是,根据Adobe设计,您必须使用Flex框架才能访问移动设备上的某些功能。这就是为什么你有很多初始化事件 - Flex框架充满了冗余或非常相似的类,函数等。
答案 1 :(得分:0)
Android有一个生命周期(http://developer.android.com/training/basics/activity-lifecycle/starting.html),我认为这就是为什么每次“打开”应用时都不会触发这些事件的原因。