2011-12-22 29 views
0

我是flex和actionscript的新生。我想知道一個移動應用程序何時啓動,調用這些方法的順序是什麼以及它們實際上是在分別做什麼。我對這些功能感到困惑:creationComplete,activate,viewActivate和addedToStage用於開始應用程序,並停用ViewDeactivate以關閉應用程序。creationComplete,activate,viewActivate和addedToStage的順序是什麼?他們在做什麼?

這是我寫的測試代碼。

<?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系統設置「強制關閉」應用程序時,t母雞我運行它,它再次顯示:

creationComplete 
viewActivate 
addedToStage 
viewDeactivate 
deactivate 

所以沒有任何人知道爲什麼我第一次運行它,它只是顯示「viewActivate」,但沒有「激活」,併爲未來當我運行它,它都顯示但錯過「addedToStage」和「creationComplete」?任何人都可以告訴我這些功能用於什麼?他們實際上做了什麼?爲什麼序列顯示那樣?也沒有任何人知道什麼是「激活」和「viewActivate」,也有「取消」和「viewDeactivate「之間的區別?

謝謝!

回答

2

activate事件從此事件(事件的調度類目前的默認實現繼承在播放器運行時),這個類通常由其他類擴展,如果他們希望能夠分派事件,這個特殊事件被調度"when the Flash Player or AIR application gains operating system focus and becomes active"請注意,它是一個廣播類型的事件,這意味着你不需要聽任何特定的調度程序,它在任何現有的監聽程序上調用。

addedToStage is dispa (它的屬性如stage,parentloaderInfo被填充,並且潛在地,它可以開始接收交互事件,例如鼠標事件,觸摸事件等)。這是所有顯示對象可用的基本事件之一。

viewActivate是特定於由從spark.components.View繼承的類調度的移動設備事件。到目前爲止,我明白了,一旦視圖(調度它)變得對用戶可見,它就會被調度。

creationComplete是特定於Flex框架事件。它將由上面提到的View類調度,因爲它是UIComponent的擴展,它是Flex框架的核心組件。此事件被派出once all of the components properties declared in MXML template were set,組件完成驗證週期,正在佈局等。

最遺憾的是,根據Adobe設計,您必須使用Flex框架才能訪問移動設備上的某些功能。這就是爲什麼你有這麼多的初始化事件--Flex框架是臃腫冗餘或非常類似的類,功能等。

+0

感謝您的回覆。但我有點困惑添加到顯示列表(addedToStage)的階段和顯示它或使其可見(viewActivate)有什麼區別?爲什麼我第一次運行我的應用程序,它沒有調用激活功能? – LuciferTian2010

相關問題