1

好奇心に駆られて、FlexApplicationで使用されるライフサイクルを理解しようとしています。

それで、私はこの議論について少し研究しました。FlashPlayerで使用される2つの重要な概念は次のとおりです。

  • SWFフレーム:グラフィカルコードをコードとして含む論理ユニットです
  • Flash Playerフレーム:Flashランタイムが画面を更新するために使用し、frameRateプロパティで定義される時間間隔です。

もしそうなら、これら2つの概念の関係を説明していただけますか?特に、彼らは一緒にペアになっているのですか?

主なルールは次のとおりです。FlashPlayerはswfでストリーミングします。完全なSWFフレームが読み取られるまで、FlashPlayerはそれをレンダリングできません。

私が理解する必要があることを説明しようと思います。簡単にするために、SWFFR1とSWFFR2の2つのフレームアプリケーションがあるとします。

一般に(たとえばCS4では)フレームは、as3コードを付加できる論理ユニット(ShowFrameタグで区切られる)と見なされます。これは、swfファイルの簡略化されたバージョンだと思います。

  • ヘッダー//frameRateはここで定義されます
  • シンボル、クラスなど…//これはFR1 === ShowFrame ===
  • シンボル、クラスなど…//これはFR2です===ShowFrame===終了

FR1とFR2の2つのフレームがある場合、FlashはFR1の実行を開始し、次のフレーム(FR2)に進みます。実行を停止しない場合、Playerは実行し、FR1とFR2に含まれるコードを無限ループでレンダリングします。逆に、FR2などで実行を停止すると、フラッシュプレーヤーはFR2に含まれるコードの実行をループします。

では、Flash PlayerフレームはSWFフレームごとに何度も発生する可能性がありますか?

FR1がダウンロードしているとき(FR1が完全にロードされていないとき)、enterFrameイベントはありますか?FR1が完全にロードされたときに最初のframeEventが発生しますか?FR1はどの期間レンダリングされますか?別のシナリオでは、停止コマンドをFR1に呼び出した場合、指定したレートでenterFrameを取得します(現在のフレームはFR1です)。その間、FR2はダウンロード中です。終了したら、次のフレーム(FR2)に進みます。FR2はどの期間レンダリングされますか?Flash PlayerはFR2を次の時間間隔にレンダリングしようとしますか?

この単純なシーケンスを考慮に入れてください。

  1. FR1はダウンロード中です
  2. FR1は完全にダウンロードされています
  3. FR1はstop()メソッドを呼び出し、その間FR2はダウンロード中です
  4. FR2は完全にダウンロードされています
  5. FR2に移動
  6. FR2はstop()メソッドを呼び出します
  7. 等々

Flash PlayerのenterFrameイベントが発生したときに、アンダースコアを付けていただけますか?

お時間をいただきありがとうございます。よろしくお願いいたします。Flex_Addicted。

4

1 に答える 1

0

あなたは間違いなく物事を調べているように見えますが、あなたの仮定のいくつかは正しくありません。Flexは、1つの美しいフレームワークに記述されたFlashコードです。したがって、すべては、コードの実行とそのコードの実行、レンダリングの結果が混在するフレームに帰着します。必要なコードがすべて実行され、レンダリングプロセスが完了すると、フレームが完了し、FlashPlayerは次のフレームに移動します。

したがって、enterFrameが呼び出されます。

現在、Flex開発者がenterFrameイベントをリッスンすることは一般的ではありません。

Flex Appsを理解するには、それらがFlashアプリであり、最初のフレームが読み込みフレームで、2番目のフレームがアプリであると考える必要があります。残りのすべてのフレームを構成するのは、サブパーツとその個々のタイムラインです。この概念は間違いなく人々を混乱させます。なぜなら、enterFrameは2回だけ呼び出されるべきであると彼らは信じているからですが、そうではありません。

多くの人が持っている次の間違った仮定は、「コードが実行されていない」という理由だけで、フレームがまだ呼び出されていないということです。これもそうではありません。何かが変更されていないからといって、フレームが呼び出されていないことを意味するわけではなく、適切なチェックがなければ、大量の処理が行われていません。

HTH

于 2009-12-21T15:34:10.520 に答える