2011-12-22 10 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システム設定を使用してアプリを強制終了するときのみ私はそれを実行鶏、それが再び表示されます。

creationComplete 
viewActivate 
addedToStage 
viewDeactivate 
deactivate 

だから誰もが知っている、なぜ最初の時間、私はそれが唯一の「viewActivate」を表示しないが、何の「活性化」し、将来のために、私はそれを実行したとき、それは両方のディスプレイにそれを実行します"addedToStage"と "creationComplete"が欠けていますか?誰でも私にこれらの機能が何のために使われているのか教えていただけますか?彼らは実際に何をしていますか?なぜそのようなシーケンスが表示されますか?また、誰もが「活性化」と「viewActivate」とも「無効化」と「viewDeactivate「の違いは?何を知っているん

ありがとう!

答えて

2

activateイベントがのEventDispatcher(現在クラスを派遣イベントのデフォルトの実装から継承されますこのクラスは通常、イベントをディスパッチできるようにするために、他のクラスによって拡張されています。この特定のイベントは、ディスパッチされます"when the Flash Player or AIR application gains operating system focus and becomes active"これはブロードキャストタイプのイベントであり、リッスンする必要はありません特定のディスパッチャは、既存のリスナー上で呼び出されます。

addedToStageはdispaです。 when the listener is added to display list(これはstageparentloaderInfoなどのプロパティが設定され、マウスイベントやタッチイベントなどの相互作用イベントの受信を開始する可能性があります)これはすべての表示オブジェクトで使用できる基本イベントの1つです。

viewActivateは、spark.components.Viewを継承するクラスによって送出されるモバイルデバイスイベントに固有です。これまでのところ、(ディスパッチする)ビューがユーザーに見えるようになると、ディスパッチされます。

creationCompleteは、Flexフレームワークイベントに固有です。これは、FlexフレームワークのコアコンポーネントであるUIComponentの拡張であるため、上記のViewクラスによって送出されます。このイベントは、once all of the components properties declared in MXML template were setが送信され、コンポーネントの検証サイクルが終了し、レイアウトされています。

残念ながら、Adobeの設計によれば、Flexフレームワークを使用してモバイルデバイスの特定の機能にアクセスする必要があります。これが、あなたが初期化イベントをたくさん持っている理由です.Flexフレームワークは、冗長クラスまたは非常に似たクラス、関数などで膨れています。

+0

ご返信ありがとうございます。しかし、私は少し表示リスト(addedToStage)の段階に追加し、それを表示するか、またはそれを表示する(viewActivate)の違いは少し混乱ですか?なぜ私は初めてアプリケーションを起動するときに、activate関数を呼び出さなかったのですか? – LuciferTian2010

関連する問題