0

メイン SWF が 30 MB を超える大きなソフトウェアを開発しています。ロード時間を短縮するために、オンデマンドでロードされる外部 SWF を使用しています (たとえば、特定の GUI ボタン​​がクリックされたとき、またはアプリケーションの特定の段階に達したとき)。SWF のロジックをメイン アプリケーションに接続するために、最初にすべてのクラス定義を含む外部 SWF をロードし、後でグラフィックとローカライズされたテキストを設定します。データとロジックはやみくもに設定されます。私たち (プログラマー) は、SWF (GUI デザイナーによって作成された) によってどのパブリック メンバーと変数が使用されているかを認識していないため、GUI 開発と AS3 プログラミングの両方でタイプミスを起こしがちです。ただし、ソースコードは入手可能であり、私たちが抱えている問題は不要なようです.

Flash Builder のコード支援機能が有効になるように、Adobe Flash Pro のソース コードを、対応する SWF と連携する AS3 コードとどのように接続すればよいでしょうか? .fla のコードをインポートすると、特定のメンバーは .fla 内にしか存在しないため不明です。推奨されるワークフローは何ですか?

4

3 に答える 3

1

これは、小規模なプロジェクトに取り組んでいたときにこれを行った方法です。次に、それをどのようにスケーリングできるかについての考えを書きます。

これらは、GUI の開発プロセスで実行された手順です。

  1. 一般的なコンセプトを持っています (プログラマーは関与しません。デザイナーは UI/UX または顧客とこれを決定します)。

  2. デザイナーとプログラマーは、前のステップで作成された一般的なスキームを確認し、プログラマーは、デザイナーが作業の結果として生成する SWC に存在する必要があるシンボルやその他のアセットに必要な定義を作成します。

  3. 設計者は「ダミー」定義を受け取り、それらをプロジェクトに接続します。新しいシンボルを作成したり、アセットをインポートしたりするたびに、そのアセットを既存の定義にリンクします。

  4. ステージの後、いくつかのシンボルがすでに SWC にある場合、デザイナーは SWC をプログラマーに渡します。プログラマーは独自の定義を使用します (そこからデザイナーが導き出したものです)。プログラマーはこれらの定義を使用して、インターフェイスの機能部分を記述し、それらをプログラムの他の部分に接続しました。

これらのステップを繰り返すことで、プロジェクトにコンポーネントを徐々に追加し、それぞれの部分を独立して開発することができました。(デザイナー間でワークロードを分割して、それぞれが以前に作業することを選択した一連の定義を使用して独自の SWC を作成することができます)。

落とし穴:

  1. 設計者は forklfow を使用するためのトレーニングを受ける必要があります (シンボルを既存の定義に接続する方法、SWC をコンパイルする方法を知っている人はほとんどいません)。しかし、その機能は Flash CS にあります。

  2. 人的エラー (デザイナーがリンク時にタイプミスをした場合、ライブラリーがプログラマーに渡されるまで、デザイナーはそれに気づきません)。

ヒューマンエラーの回避

私の小規模なプロジェクトでは、swfdumpユーティリティを介して SWC から抽出した SWF を実行し、それを grep にパイプして、シンボル定義が存在するかどうかを確認していました。数が少ないので、手作業で行うことができました。

ただし、ご指摘のプロジェクトは規模が大きいため、作成したアウトライン (ActionScript ソース ファイル) と SWC ライブラリを入力として受け取るスクリプトを作成します。SWC を解凍し、そこから SWF を抽出して実行しswfdump、ソース ファイルのすべての定義が SWF に存在することを確認します。デザイナーは、SWC を送信する前にこのスクリプトを実行し、少なくとも最後の更新時に追加したシンボル/アセットが実際にライブラリに作成されていることを確認する必要があります。

分析にはまだいくつかの技術的な問題があります: 重複した名前、高レベルの「ノイズ」の可能性、たとえばフックをコミットするのと同じようにする代わりに、このチェックを実行するのに人間に依存することになります。しかし、これらのどれもが解決できないようには見えません。十分な努力と創意工夫があれば、完全性を保証するアプリケーションを思いつくことができるはずです。

于 2013-03-25T09:32:33.943 に答える
1

接続する最も簡単な方法は、実行時に SWF をロードする代わりに SWC を使用することです。あなたの質問から、このソリューションはサイズの制約により許可されていないことがわかります。

あなたが試すことができるのは、デザイナーに SWC として提供するように依頼し、入手したすべての SWC に対して (フラッシュ ビルダーで) 独自のプロジェクトを作成することです。これでオートコンプリートが可能になり、Flash cs6 の代わりに Flash Builder からビルドして実行時にロードできる SWF を引き続き作成できます。

このように設定すると、おそらく複数のプロジェクトで同じコード (の一部) を使用したくなるので、すべての「swc プロジェクト」が使用するライブラリ/メイン プロジェクトを必ず作成してください。

ここで、メイン/ライブラリ プロジェクトが を使用-link-reportしてコンパイルされ、モジュール-load-externsがメイン プロジェクトに既に存在するクラスを除外するために使用されていることを確認します。

于 2013-03-24T07:54:04.837 に答える
0

あまり役に立たないかもしれませんが、メイン アプリケーションがすべてのアプリケーション クリティカルな機能を担当することをお勧めします。特にナレーション。

外部 SWF をロードすると、その SWF は独自の「サンドボックス」内で動作し、限られた方法でのみメイン アプリケーションと通信する必要があります。 - SWF が完全にロードされたことをメイン アプリケーションに伝えます。- メイン アプリが知る必要があることをユーザーが完了または実行したときに、メイン アプリに通知します。

メイン アプリは、SWF が存在するかどうか、およびこれらの関数があるかどうかを確認せずに、関数が存在することを期待してはなりません。読み込まれた SWF は、すべて事前に決定された、メイン アプリ内の限られた数の関数のみを呼び出す必要があります。

于 2014-10-22T09:56:46.423 に答える